Audit konfigurace HTTPS

Vložte hlavičky odpovědi webu — a pokud je máte, jeho certifikát, úryvek zdrojového kódu stránky a název hostitele — a tato stránka ohlásí, jak je nastavena strana HTTPS: zda je nastaveno HSTS a na jak dlouho, zda zásada obsahu povyšuje nezabezpečené požadavky, zda jsou cookies označeny Secure a SameSite, zda banner serveru neprozrazuje verzi a co říkají proxy hlavičky o požadavku, který aplikace skutečně viděla. Certifikát se kontroluje ve stejné zprávě, prosté podzdroje http:// se spočítají ze zdrojového kódu stránky a příkazy, které vidí handshake, jsou vypsány, abyste je spustili sami. Vše běží ve vašem prohlížeči a stránka nedělá vlastní požadavky.
1. Hlavičky odpovědi
Celý blok hlaviček odpovědi včetně stavového řádku. Nejsnazší zdroj: curl -sI https://example.com/ v terminálu, nebo panel Hlavičky na kartě Síť ve vývojářských nástrojích prohlížeče, zkopírovaný z horní části. Další hlavičky se načtou a ignorují; hlásí se jen hlavičky relevantní pro HTTPS.
2. Certifikát nebo řetězec (volitelné)
Pokud je toto vyplněno, stejná zpráva obsahuje i úplný audit certifikátu, takže konfigurace a certifikát se čtou dohromady. PEM, samotné tělo base64 nebo hexadecimální i .p7b PKCS#7 fungují; kontrola certifikátů jde do certifikátu samostatně do větší hloubky.
3. Úryvek zdrojového kódu stránky (volitelné)
Vložte zdrojový kód stránky (nebo jen značky s URL) a vypíše se každá prostá adresa http://, protože podzdroj načtený přes HTTP rozbije zámek a může být přepsán cestou, i když samotná stránka přišla přes HTTPS. Adresy na vlastního hostitele webu jsou označeny zvlášť, protože právě tyto by relativní URL opravila.
4. Název hostitele (volitelné)
Pokud zde zadáte název hostitele, audit zkontroluje alternativní názvy subjektu tak, jak to dělá prohlížeč, včetně pravidel zástupných znaků, a porovná s nimi prosté adresy http://.
zatím nic nezkontrolováno
Ukázka je záměrně nedokonalá, aby každá část zprávy měla co ukázat: blok hlaviček s HSTS a zásadou obsahu (ale bez preload a s jedním cookie bez SameSite), řetězec dvou certifikátů a úryvek stránky, který načte skript přes prostý http:// a obrázek nasměruje na vlastního hostitele stejným způsobem. U ukázky očekávejte F a přečtěte si nálezy pod ním, abyste viděli, co každý znamená.
Co se kontroluje. Z bloku hlaviček: HSTS, jeho max-age, includeSubDomains a preload; zásada obsahu, která povyšuje nezabezpečené požadavky; příznaky Secure, HttpOnly a SameSite u každého Set-Cookie; banner serveru, který uvádí produkt a verzi; a předávané hlavičky, které říkají, zda aplikace viděla požadavek jako HTTPS. Z bloku certifikátu: úplný audit certifikátu až po to, zda každý odkaz řetězce skutečně podepsal následující. Ze zdrojového kódu stránky: podzdroje http://. Tři části se hlásí odděleně a pak se shrnou dohromady, protože rozbitý zámek je obvykle jedna z těchto tří a ne ostatní dvě. Úplný seznam bezpečnostních hlaviček odpovědi OWASP — X-Content-Type-Options, ochrana proti rámování, Referrer-Policy, Permissions-Policy, COOP, COEP, CORP a známkované skóre — vložte stejný blok hlaviček na stránku Kontrola bezpečnostních hlaviček; obě stránky rozdělují práci podle vrstvy TLS a vrstvy hlaviček.

Co nevidí. Tato stránka nikdy neotevře spojení TLS. Prohlížeče stránce handshake neukazují, takže verze protokolu, šifrovací sada, skupina výměny klíčů, OCSP stapling, obnovení relace, 0-RTT, řetězec certifikátů, který živý server skutečně posílá, a zda přesměrování z HTTP na HTTPS probíhá na původu nebo na proxy, jsou mimo to, co jakákoli webová stránka může ohlásit. Také nedokáže oslovit třetí stranu, aby za vás sesbírala hlavičky, a nedokáže říct, zda je certifikát důvěryhodný, protože to závisí na úložišti kořenů, které stránka nemůže číst. Příkazy níže na této stránce tyto věci vidí a jsou určeny k tomu, abyste je spustili vy, na svém počítači.

Kde získat blok hlaviček. V terminálu curl -sI https://example.com/ vypíše přesně to, co tato stránka chce. V prohlížeči otevřete vývojářské nástroje, přejděte na kartu Síť, načtěte stránku znovu, vyberte požadavek na dokument a zkopírujte celou oblast Hlavičky odpovědi, nebo použijte Kopírovat → Kopírovat hlavičky odpovědi. Pro kontrolu přesměrování spusťte také curl -sI http://example.com/ a vložte oba bloky; stránka je zpracuje jeden za druhým.
Zatím nic nebylo zkontrolováno. Vložte blok hlaviček výše a stiskněte Zkontrolovat tuto konfiguraci pro úplnou zprávu; certifikát, úryvek zdrojového kódu stránky a název hostitele jsou volitelné a každý přidá vlastní sekci.
Sonda dostupnosti — jediná část této stránky, která používá síť
Stránka neotevře spojení TLS, ale může zkusit běžný požadavek. Pokud web povoluje čtení mezi zdroji, URL, na které odpověď nakonec skončí, ukáže, zda byl http:// přesměrován na https://, a to je vše, co to může dokázat. Pokud požadavek selže, tato stránka nerozliší, zda je hostitel mimo provoz, vaše připojení nefunguje, nebo web prostě nepovoluje čtení mezi zdroji — poslední je běžný případ, protože většina webů neposílá Access-Control-Allow-Origin. URL http:// je zodpovězena ještě před jakýmkoli přesměrováním, takže je to jediná věc zde, kterou prohlížeč zkusí přes prosté spojení. Nic neopustí prohlížeč, dokud nestisknete tlačítko.
Příkazy, které handshake vidí
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
Tyto příkazy mají spouštět vy, na počítači, který ovládáte, proti hostiteli, který smíte testovat. Výstup -showcerts lze vložit přímo do kontroly certifikátů a výstup hlaviček zpět na tuto stránku.
Certifikát je veřejný dokument. Každý veřejně důvěryhodný certifikát se zveřejňuje v logách Certificate Transparency, takže kterýkoli název hostitele uvnitř něj — včetně interního nebo překlepem zadaného názvu, který veřejná certifikační autorita podepsala — lze najít vyhledáním v těchto logách. Certifikát také nese adresy pro odvolání, které zvolil jeho vydavatel, a některé z nich občas pojmenují interního hostitele. Proto certifikát, který servíruje CDN, nic neříká o původním serveru: názvy v něm patří CDN. Pokud audit odhalí název hostitele, který jste nečekali, považujte ho za veřejný a nahraďte to, co chrání.

Soukromí: blok hlaviček, certifikát a zdrojový kód stránky se čtou lokálně a nikdy se nenahrávají; žádný požadavek jakéhokoli druhu se neprovede, pokud nestisknete tlačítko v sondě dostupnosti. Vlastní certifikát vytvoříte generátorem self-signed certifikátů; pro ověření, že soukromý klíč patří k certifikátu, použijte porovnávač certifikátu a klíče.