Audit al configurării HTTPS — HSTS, cookie-uri, conținut mixt și certificatul
Auditul configurării HTTPS
Se lipesc antetele de răspuns ale unui site — și, dacă sunt disponibile, certificatul său, un fragment din sursa paginii și numele de gazdă — iar această pagină raportează cum este configurată partea HTTPS: dacă HSTS este setat și pentru cât timp, dacă o politică de securitate a conținutului actualizează cererile nesigure, dacă cookie-urile sunt marcate Secure și SameSite, dacă un banner de server dezvăluie o versiune și ce spun antetele de proxy despre cererea pe care a văzut-o efectiv aplicația. Certificatul este auditat în același raport, resursele subordonate http:// simple sunt numărate din sursa paginii, iar comenzile care pot vedea handshake-ul sunt listate pentru a fi rulate de utilizator. Totul rulează în browser, iar pagina nu face nicio cerere proprie.
1. Antete de răspuns
Întregul bloc de antete de răspuns, inclusiv linia de stare. Cea mai simplă sursă: curl -sI https://example.com/ într-un terminal, sau panoul Headers din fila Network a instrumentelor pentru dezvoltatori ale browserului, copiat de la începutul fișierului. Antetele suplimentare sunt citite și ignorate; se raportează doar cele relevante pentru HTTPS.
2. Certificat sau lanț (opțional)
Odată completat, același raport include și auditul complet al certificatului, astfel încât configurarea și certificatul se citesc împreună. PEM, un corp base64 sau hexazecimal simplu și un .p7b PKCS#7 funcționează toate; verificatorul de certificate merge pe certificat separat, mai în profunzime.
3. Fragment din sursa paginii (opțional)
Se lipește sursa paginii (sau doar etichetele cu URL-uri), iar fiecare adresă simplă http:// este listată, deoarece o resursă subordonată încărcată prin HTTP rupe lacătul și poate fi rescrisă în tranzit chiar și atunci când pagina în sine a sosit prin HTTPS. Adresele către propria gazdă a site-ului sunt semnalate separat, deoarece acelea sunt cele pe care le-ar repara un URL relativ.
4. Nume de gazdă (opțional)
Dacă aici este introdus un nume de gazdă, auditul verifică numele alternative de subiect așa cum o face un browser, inclusiv regulile wildcard, și potrivește față de acestea adresele simple http://.
nimic auditat încă
Exemplul este intenționat imperfect, astfel încât fiecare parte a raportului să aibă ceva în ea: un bloc de antete cu HSTS și o politică de securitate a conținutului (dar fără preload și un cookie fără SameSite), un lanț de două certificate și un fragment de pagină care încarcă un script prin http:// simplu și indică o imagine către propria gazdă a site-ului în același mod. Se așteaptă un F pe exemplu și se citesc constatările de dedesubt pentru a vedea ce înseamnă fiecare.
Ce se verifică. Din blocul de antete: HSTS, max-age-ul său, includeSubDomains și preload; o politică de securitate a conținutului care actualizează cererile nesigure; indicatorii Secure, HttpOnly și SameSite de pe fiecare Set-Cookie; un banner de server care numește un produs și o versiune; și antetele redirecționate care arată dacă aplicația a văzut cererea ca fiind HTTPS. Din blocul certificatului: auditul complet al certificatului, până la a verifica dacă fiecare legătură din lanț a semnat cu adevărat următoarea. Din sursa paginii: resursele subordonate http:// simple. Cele trei sunt raportate separat și apoi rezumate împreună, deoarece un lacăt rupt este de obicei unul dintre cele trei și nu celelalte două. Pentru lista OWASP completă a antetelor de răspuns de securitate — X-Content-Type-Options, protecția la încadrare, Referrer-Policy, Permissions-Policy, COOP, COEP, CORP și nota punctată — se lipește același bloc de antete în pagina Verificarea antetelor de securitate; cele două pagini împart munca pe stratul TLS și pe stratul antetelor.
Ce nu poate vedea. Această pagină nu deschide niciodată o conexiune TLS. Browserele nu expun handshake-ul unei pagini, deci versiunea de protocol, suita de cifruri, grupul de schimb de chei, OCSP stapling, reluarea sesiunii, 0-RTT, lanțul de certificate pe care îl trimite efectiv un server activ și dacă o redirecționare HTTP către HTTPS are loc la origine sau la un proxy sunt toate în afara a ceea ce poate raporta orice pagină web. De asemenea, nu poate contacta un site terț ca să adune antetele pentru cel care folosește pagina și nu poate spune dacă un certificat este de încredere, deoarece aceasta depinde de un magazin de rădăcini pe care o pagină nu îl poate citi. Comenzile de mai jos pot vedea aceste lucruri și sunt destinate să fie rulate pe mașina proprie.
De unde se obține blocul de antete. Într-un terminal, curl -sI https://example.com/ afișează exact ce cere această pagină. Într-un browser, se deschid instrumentele pentru dezvoltatori, se merge la fila Network, se reîncarcă pagina, se selectează cererea documentului și se copiază întreaga zonă Response Headers, sau se folosește Copiază → Copiază antetele de răspuns. Pentru verificarea redirecționării, se rulează și curl -sI http://example.com/ și se lipesc ambele blocuri; pagina le raportează unul după altul.
Raport de audit
Nimic auditat încă. Se lipește un bloc de antete mai sus și se apasă Auditează această configurare pentru raportul complet; un certificat, un fragment din sursa paginii și un nume de gazdă sunt opționale, iar fiecare adaugă propria secțiune.
Sondaj de accesibilitate — singura parte a acestei pagini care folosește rețeaua
O pagină nu poate deschide o conexiune TLS, dar poate încerca o cerere obișnuită. Dacă site-ul permite citiri cross-origin, URL-ul la care ajunge răspunsul arată dacă http:// a fost redirecționat către https://, și atât poate dovedi aceasta. Dacă cererea eșuează, pagina nu poate spune dacă gazda este oprită, dacă conexiunea proprie este căzută sau dacă site-ul pur și simplu nu permite citiri cross-origin — ultimul este cazul frecvent, deoarece majoritatea site-urilor nu trimit Access-Control-Allow-Origin. Un URL http:// primește răspuns înaintea oricărei redirecționări, deci este singurul lucru de aici pe care un browser îl va încerca pe o conexiune simplă. Nimic nu părăsește browserul până nu se apasă butonul.
Acestea sunt destinate să fie rulate pe o mașină controlată de utilizator, împotriva unei gazde pe care acesta are voie să o testeze. Ieșirea -showcerts poate fi lipită direct în verificatorul de certificate, iar ieșirea antetelor înapoi în această pagină.
Certificatul este un document public. Fiecare certificat cu încredere publică este publicat în jurnalele Certificate Transparency, astfel încât orice nume de gazdă dintr-unul — inclusiv un nume intern sau greșit tastat pe care l-a semnat o autoritate publică de certificare — poate fi găsit căutând în acele jurnale. Un certificat poartă și adresele de revocare alese de emitentul său, iar acestea numesc uneori o gazdă internă. De aceea certificatul servit de un CDN nu spune nimic despre serverul de origine: numele din el aparțin CDN-ului. Dacă auditul scoate la iveală un nume de gazdă neașteptat, se tratează ca public și se înlocuiește orice protejează acesta.
Confidențialitate: blocul de antete, certificatul și sursa paginii sunt citite local și nu sunt încărcate niciodată, iar nicio cerere de niciun fel nu se face decât dacă se apasă butonul din sondajul de accesibilitate. Pentru a crea un certificat propriu se folosește generatorul de certificate autosemnate; pentru a verifica dacă o cheie privată aparține unui certificat se folosește potrivitorul de certificat și cheie.
🔒 Instrumente SSL și TLS
Utilitare pentru certificate și chei, care rulează integral în browser.