Audit konfigurácie HTTPS

Vloží sa hlavičky odpovede stránky — a ak sú k dispozícii, jej certifikát, úryvok zdroja stránky a názov hostiteľa — a táto stránka uvedie, ako je nastavená strana HTTPS: či je nastavené HSTS a na aký čas, či politika obsahu povyšuje nezabezpečené požiadavky, či sú cookies označené Secure a SameSite, či banner servera neprezrádza verziu a čo hovoria preposlané hlavičky o požiadavke, ktorú aplikácia skutočne videla. Certifikát sa audituje v tej istej správe, obyčajné podzdroje http:// sa spočítajú zo zdroja stránky a príkazy, ktoré vidia handshake, sú uvedené na spustenie vlastnou rukou. Všetko beží v prehliadači a stránka nevykonáva žiadnu vlastnú požiadavku.
1. Hlavičky odpovede
Celý blok hlavičiek odpovede vrátane riadku stavu. Najjednoduchší zdroj: curl -sI https://example.com/ v termináli alebo panel Hlavičky na karte Sieť vo vývojárskych nástrojoch prehliadača, skopírovaný zo začiatku súboru. Ďalšie hlavičky sa čítajú a ignorujú; uvádzajú sa len tie relevantné pre HTTPS.
2. Certifikát alebo reťaz (voliteľné)
Keď sa vyplní toto pole, rovnaká správa obsahuje aj úplný audit certifikátu, takže konfigurácia a certifikát sa čítajú spoločne. Funguje PEM, holé telo base64 alebo hexadecimálne, aj PKCS#7 .p7b; kontrola certifikátov ide do certifikátu samostatne a podrobnejšie.
3. Úryvok zdroja stránky (voliteľné)
Vloží sa zdroj stránky (alebo len značky s URL) a vypíšu sa všetky adresy obyčajného http://, pretože podzdroj načítaný cez HTTP rozbíja zámok a môže byť prepísaný počas prenosu, aj keď samotná stránka prišla cez HTTPS. Adresy na vlastného hostiteľa stránky sa uvádzajú osobitne, pretože relatívna URL by ich opravila.
4. Názov hostiteľa (voliteľné)
S názvom hostiteľa audit kontroluje alternatívne názvy subjektu tak, ako to robí prehliadač vrátane pravidiel zástupných znakov, a adresy obyčajného http:// s nimi porovnáva.
zatiaľ nič nie je auditované
Ukážka je zámerne nedokonalá, aby mala každá časť správy niečo obsahovať: blok hlavičiek s HSTS a politikou obsahu (ale bez preload a jeden cookie bez SameSite), dvojúrovňový reťazec certifikátov a úryvok stránky, ktorý načítava skript cez obyčajný http:// a obrázok nasmeruje na vlastného hostiteľa rovnakým spôsobom. Pri ukážke sa očakáva F; zistenia pod ňou ukazujú, čo každé znamená.
Čo sa kontroluje. Z bloku hlavičiek: HSTS, jeho max-age, includeSubDomains a preload; politika obsahu, ktorá povyšuje nezabezpečené požiadavky; príznaky Secure, HttpOnly a SameSite pri každom Set-Cookie; banner servera, ktorý uvádza produkt a verziu; a preposlané hlavičky, podľa ktorých sa dá zistiť, či aplikácia videla požiadavku ako HTTPS. Z bloku certifikátu: úplný audit certifikátu až po to, či každý článok reťazca naozaj podpísal ďalší. Zo zdroja stránky: podzdroje obyčajného http://. Tieto tri časti sa uvádzajú osobitne a potom sa spolu zhrnú, pretože rozbitý zámok býva zvyčajne jedna z týchto troch a nie zvyšné dve. Úplný zoznam bezpečnostných hlavičiek odpovede OWASP — X-Content-Type-Options, ochrana pred rámovaním, Referrer-Policy, Permissions-Policy, COOP, COEP, CORP a hodnotenie skóre — sa dá získať vložením rovnakého bloku hlavičiek na stránku Kontrola bezpečnostných hlavičiek; obe stránky rozdeľujú prácu medzi vrstvu TLS a vrstvu hlavičiek.

Čo nedokáže vidieť. Táto stránka nikdy neotvára spojenie TLS. Prehliadače stránke neodhaľujú priebeh handshake, takže verzia protokolu, šifrovacia sada, skupina výmeny kľúčov, OCSP stapling, obnovenie relácie, 0-RTT, reťazec certifikátov, ktorý skutočný server posiela, a či presmerovanie z HTTP na HTTPS prebieha na pôvodnom serveri alebo na proxy, sú mimo toho, čo môže ktorákoľvek webová stránka nahlásiť. Nedokáže ani osloviť tretí web na zber hlavičiek a nedokáže povedať, či je certifikát dôveryhodný, pretože to závisí od úložiska koreňov, ktoré stránka nemôže čítať. Príkazy uvedené nižšie na tejto stránke tieto veci vidia a spúšťa ich používateľ na vlastnom počítači.

Odkiaľ získať blok hlavičiek. V termináli curl -sI https://example.com/ vypíše presne to, čo táto stránka potrebuje. V prehliadači sa otvoria vývojárske nástroje, prejde sa na kartu Sieť, stránka sa znova načíta, vyberie sa požiadavka na dokument a skopíruje sa celá oblasť Hlavičky odpovede, alebo sa použije Kopírovať → Kopírovať hlavičky odpovede. Na kontrolu presmerovania sa spustí aj curl -sI http://example.com/ a obe bloky sa vložia; stránka ich zobrazí jeden za druhým.
Zatiaľ nič nie je auditované. Vloží sa blok hlavičiek vyššie a stlačí sa Auditovať túto konfiguráciu pre úplnú správu; certifikát, úryvok zdroja stránky a názov hostiteľa sú voliteľné a každý pridá vlastnú sekciu.
Sonda dostupnosti — jediná časť tejto stránky, ktorá používa sieť
Stránka nemôže otvoriť spojenie TLS, ale môže vykonať bežnú požiadavku. Ak stránka povoľuje čítanie naprieč pôvodmi, URL, na ktorú odpoveď nakoniec dorazí, ukáže, či bolo http:// presmerované na https://, a nič viac sa tým dokázať nedá. Ak požiadavka zlyhá, táto stránka nevie povedať, či je hostiteľ nedostupný, či je nedostupné pripojenie, alebo či stránka jednoducho nepovoľuje čítanie naprieč pôvodmi — posledný prípad je bežný, pretože väčšina stránok neposiela Access-Control-Allow-Origin. URL http:// sa vybavuje ešte pred akýmkoľvek presmerovaním, takže je to jediná vec tu, ktorú prehliadač pokúsi vykonať na obyčajnom pripojení. Nič neopustí prehliadač, kým sa nestlačí tlačidlo.
Príkazy, ktoré vidia handshake
curl -sI https://example.com/ # the header block this page reads curl -sI http://example.com/ # is plain HTTP answered, or redirected? curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' http://example.com/ openssl s_client -connect example.com:443 -servername example.com -showcerts </dev/null openssl s_client -connect example.com:443 -servername example.com -tls1_3 </dev/null 2>/dev/null \ | openssl x509 -noout -subject -issuer -dates -ext subjectAltName nmap --script ssl-enum-ciphers -p 443 example.com testssl.sh example.com # or: docker run --rm -ti drwetter/testssl.sh example.com
Tieto príkazy spúšťa používateľ na počítači, ktorý ovláda, voči hostiteľovi, ktorého testovanie je povolené. Výstup -showcerts sa dá vložiť priamo do kontroly certifikátov a výstup hlavičiek späť na túto stránku.
Certifikát je verejný dokument. Každý verejne dôveryhodný certifikát sa zverejňuje v logoch Certificate Transparency, takže akýkoľvek názov hostiteľa v ňom — vrátane interného alebo preklepnutého názvu, ktorý verejná certifikačná autorita podpísala — sa dá nájsť vyhľadávaním v týchto logoch. Certifikát tiež nesie adresy na odvolanie, ktoré zvolil jeho vydavateľ, a tie občas pomenúvajú interný hostiteľ. Preto certifikát, ktorý podáva CDN, nehovorí nič o pôvodnom serveri: názvy v ňom patria CDN. Ak audit odhalí názov hostiteľa, ktorý sa neočakával, treba ho považovať za verejný a vymeniť to, čo chráni.

Súkromie: blok hlavičiek, certifikát a zdroj stránky sa čítajú lokálne a nikam sa neodosielajú; žiadna požiadavka sa nevykoná, kým sa nestlačí tlačidlo v sonde dostupnosti. Na vytvorenie vlastného certifikátu slúži generátor certifikátov s vlastným podpisom; na overenie, že súkromný kľúč patrí certifikátu, slúži porovnávač certifikátu a kľúča.