Controllo della configurazione HTTPS — HSTS, cookie, contenuto misto e certificato
Controllo della configurazione HTTPS
Incolli le intestazioni di risposta di un sito — e, se le ha, il suo certificato, un frammento del sorgente della pagina e il nome dell'host — e questa pagina riporta come è configurata la parte HTTPS: se HSTS è impostato e per quanto tempo, se una content security policy aggiorna le richieste non sicure, se i cookie sono marcati Secure e SameSite, se un banner del server rivela una versione, e che cosa dicono le intestazioni di proxy sulla richiesta che l'applicazione ha davvero ricevuto. Il certificato viene verificato nello stesso rapporto, le risorse secondarie http:// in chiaro vengono contate dal sorgente della pagina, e i comandi che possono vedere l'handshake sono elencati perché li esegua lei. Tutto funziona nel suo browser e la pagina non effettua richieste proprie.
1. Intestazioni di risposta
L'intero blocco di intestazioni di risposta, riga di stato inclusa. Fonte più semplice: curl -sI https://example.com/ in un terminale, oppure il pannello Intestazioni della scheda Rete degli strumenti per sviluppatori del browser, copiato dall'inizio. Le intestazioni in più vengono lette e ignorate; vengono riportate solo quelle pertinenti a HTTPS.
2. Certificato o catena (facoltativo)
Con questo campo compilato, lo stesso rapporto contiene anche la verifica completa del certificato, così configurazione e certificato vengono letti insieme. Funzionano PEM, un corpo base64 o esadecimale semplice e un .p7b PKCS#7; il verificatore di certificati analizza il certificato da solo in maggiore profondità.
3. Frammento del sorgente della pagina (facoltativo)
Incolli il sorgente della pagina (o solo i tag con gli URL) e ogni indirizzo http:// in chiaro viene elencato, perché una risorsa secondaria caricata via HTTP rompe il lucchetto e può essere riscritta durante il transito anche quando la pagina stessa è arrivata in HTTPS. Gli indirizzi verso l'host del sito stesso vengono segnalati a parte, poiché sono quelli che un URL relativo correggerebbe.
4. Nome dell'host (facoltativo)
Con un nome di host qui, il controllo verifica i nomi alternativi del soggetto come farebbe un browser, incluse le regole dei jolly, e confronta con esso gli indirizzi http:// in chiaro.
nulla ancora verificato
L'esempio è volutamente imperfetto, così che ogni parte del rapporto abbia qualcosa da mostrare: un blocco di intestazioni con HSTS e una content security policy (ma senza preload e con un cookie privo di SameSite), una catena di due certificati, e un frammento di pagina che carica uno script via http:// in chiaro e punta un'immagine all'host stesso del sito allo stesso modo. Si aspetti una F sull'esempio e legga i risultati sotto per capire che cosa significa ognuno.
Che cosa viene controllato. Dal blocco di intestazioni: HSTS, il suo max-age, includeSubDomains e preload; una content security policy che aggiorna le richieste non sicure; i flag Secure, HttpOnly e SameSite su ogni Set-Cookie; un banner del server che nomina un prodotto e una versione; e le intestazioni inoltrate che indicano se l'applicazione ha visto la richiesta come HTTPS. Dal blocco del certificato: la verifica completa del certificato, fino a stabilire se ogni collegamento della catena ha davvero firmato il successivo. Dal sorgente della pagina: le risorse secondarie http:// in chiaro. Le tre parti sono riportate separatamente e poi riassunte insieme, perché un lucchetto rotto di solito dipende da una di queste tre e non dalle altre due. Per l'elenco OWASP completo delle intestazioni di risposta di sicurezza — X-Content-Type-Options, protezione dal framing, Referrer-Policy, Permissions-Policy, COOP, COEP, CORP e il punteggio — incolli lo stesso blocco di intestazioni nella pagina Verifica intestazioni di sicurezza; le due pagine dividono il lavoro tra il livello TLS e il livello delle intestazioni.
Che cosa non può vedere. Questa pagina non apre mai una connessione TLS. I browser non espongono l'handshake a una pagina, quindi la versione del protocollo, la suite di cifrari, il gruppo di scambio della chiave, lo stapling OCSP, la ripresa della sessione, lo 0-RTT, la catena di certificati che un server attivo invia davvero, e se un reindirizzamento da HTTP a HTTPS avviene all'origine o in un proxy sono tutti fuori da ciò che una pagina web può riportare. Non può nemmeno raggiungere un sito di terzi per raccogliere le intestazioni al suo posto, e non può dirle se un certificato è attendibile, perché questo dipende da un archivio di radici che una pagina non può leggere. I comandi più in basso in questa pagina vedono quelle cose, e sono pensati per essere eseguiti da lei, sulla sua macchina.
Dove ottenere il blocco di intestazioni. In un terminale, curl -sI https://example.com/ stampa esattamente ciò che questa pagina vuole. In un browser, apra gli strumenti per sviluppatori, vada alla scheda Rete, ricarichi la pagina, selezioni la richiesta del documento e copi l'intera area delle intestazioni di risposta, oppure usi Copia → Copia intestazioni di risposta. Per il controllo dei reindirizzamenti, esegua anche curl -sI http://example.com/ e incolli entrambi i blocchi: la pagina li riporta uno dopo l'altro.
Rapporto di verifica
Nulla ancora verificato. Incolli un blocco di intestazioni sopra e prema Verifica questa configurazione per il rapporto completo; un certificato, un frammento del sorgente della pagina e un nome di host sono facoltativi e ognuno aggiunge la sua sezione.
Verifica di raggiungibilità — l'unica parte di questa pagina che usa la rete
Una pagina non può aprire una connessione TLS, ma può tentare una normale richiesta. Se il sito consente letture cross-origin, l'URL a cui finisce la risposta mostra se http:// è stato reindirizzato a https://, ed è tutto ciò che questo può provare. Se la richiesta fallisce, questa pagina non può dire se l'host è giù, se la sua connessione è giù, o se il sito semplicemente non consente letture cross-origin — quest'ultimo è il caso comune, perché la maggior parte dei siti non invia Access-Control-Allow-Origin. Un URL http:// riceve risposta prima di qualsiasi reindirizzamento, quindi è l'unica cosa qui che un browser tenterà su una connessione in chiaro. Nulla lascia il browser finché non preme il pulsante.
Questi sono pensati per essere eseguiti da lei, su una macchina che controlla, contro un host che è autorizzata a testare. L'output di -showcerts può essere incollato direttamente nel verificatore di certificati, e l'output delle intestazioni in questa pagina.
Il certificato è un documento pubblico. Ogni certificato pubblicamente attendibile viene pubblicato nei log di Certificate Transparency, quindi qualsiasi nome di host al suo interno — compreso un nome interno o digitato male che un'autorità di certificazione pubblica ha firmato — può essere trovato cercando in quei log. Un certificato porta anche gli indirizzi di revoca scelti dal suo emittente, e questi a volte nominano un host interno. Per questo il certificato che una CDN serve non dice nulla sul server di origine: i nomi che contiene appartengono alla CDN. Se la verifica fa emergere un nome di host che non si aspettava, lo consideri pubblico e sostituisca ciò che protegge.
Privacy: il blocco di intestazioni, il certificato e il sorgente della pagina vengono letti localmente e non vengono mai caricati, e nessuna richiesta di alcun tipo viene effettuata a meno che non prema il pulsante della verifica di raggiungibilità. Per creare un certificato proprio usi il generatore di certificati autofirmati; per verificare che una chiave privata appartenga a un certificato usi il confronto di certificato e chiave.
🔒 Strumenti SSL e TLS
Utilità per certificati e chiavi che funzionano interamente nel suo browser.