„Vaše pripojenie nie je súkromné“: varovanie o SSL certifikáte
· 6 min čítania
Čo chyba znamená
Prehliadač sa pripojil k serveru, server predložil svoj certifikát a prehliadač mu odmietol dôverovať. Chrome zobrazí „Vaše pripojenie nie je súkromné“ s kódom chyby nižšie; Firefox „Pozor: možné bezpečnostné riziko“; Safari „Toto pripojenie nie je súkromné“. Web nie je napadnutý a váš počítač nie je infikovaný; certifikát, ktorý server poslal, neprejde kontrolami, ktoré prehliadač robí.
Kód chyby hovorí, ktorá kontrola zlyhala:
NET::ERR_CERT_DATE_INVALID: certifikát vypršal alebo jeho dátum začiatku je v budúcnosti (alebo sú zlé hodiny návštevníka).NET::ERR_CERT_COMMON_NAME_INVALID: certifikát je pre iný názov, napríklad prewww.example.com, ale nie preexample.com.NET::ERR_CERT_AUTHORITY_INVALID: prehliadač nedokáže vysledovať certifikát k dôveryhodnej autorite: svojpodpisný, neznámy vydavateľ alebo chýbajúci sprostredkujúci certifikát.NET::ERR_CERT_REVOKED: certifikát bol vydavateľom odvolaný.SSL_ERROR_BAD_CERT_DOMAINaSEC_ERROR_EXPIRED_CERTIFICATEsú verzie chýb názvu a dátumu vo Firefoxe.
Bežné príčiny
- Certifikát vypršal. Certifikáty Let's Encrypt platia 90 dní; automatické obnovenie týždne zlyhávalo a nikto si to nevšimol až do dňa, keď platnosť skončila. Platené certifikáty vypršia po roku a e-mail o obnovení išiel na starú adresu.
- Obnovený, ale nenačítaný znova. certbot zapísal nový certifikát na disk, ale webový server stále podáva starý z pamäte, lebo chýba hook na opätovné načítanie.
- Zlý názov. Certifikát pokrýva
example.com, ale návštevníci prichádzajú nawww.example.com, alebo sa pridala nová subdoména bez certifikátu. - Chýbajúci sprostredkujúci certifikát. Server posiela len vlastný certifikát, nie reťaz. Desktopové prehliadače často medzeru doplnia z cache; telefóny a aplikácie zlyhajú.
- Problém s hodinami. Na počítači návštevníka zlý dátum spôsobí, že každý certifikát vyzerá vypršaný alebo ešte neplatný. Na serveri zlé hodiny rozbijú obnovovanie.
- CDN alebo proxy vpredu s vlastným certifikátom, ktorý vypršal alebo nepokrýva názov, kým pôvodný server je v poriadku.
Ak ste návštevník
Najprv skontrolujte dátum a čas počítača; mŕtva batéria CMOS alebo vypnutá synchronizácia času spôsobí, že zlyhá každý web. Potom skúste inú sieť. Ak sa varovanie zobrazuje len pri jednom webe a na každom zariadení, problémom je certifikát webu a majiteľ to musí opraviť. Prekliknutie cez „Pokračovať na web (nebezpečné)“ je v poriadku pre web, ktorý poznáte, nie pre nič s prihlásením alebo platbou.
Ak ide o váš web: najprv skontrolujte
Spustite kontrolu SSL. Ukáže dátum vypršania, názvy, pre ktoré je certifikát platný, a či je reťaz úplná, zvonku, bez akejkoľvek cache prehliadača. Potom na vlastnom serveri:
# čo server skutočne posiela?
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subject -ext subjectAltName
# čo je na disku?
sudo certbot certificates
# sú hodiny servera správne?
timedatectl
Ak sú dátumy na disku novšie než dátumy, ktoré server posiela, máte prípad 2: obnovený, ale nenačítaný znova.
Opravy na vlastnom serveri
1. Obnovte cez certbot
sudo certbot renew
# alebo, ak renew hlási „not yet due“, ale podávaný certifikát je starý:
sudo certbot renew --force-renewal
sudo systemctl reload nginx # alebo apache2
Ak obnovenie zlyhá, výstup povie prečo. Obvyklé dôvody: port 80 je blokovaný alebo presmerovaný niekam, kam certbot nečaká (výzva HTTP-01 potrebuje, aby bolo /.well-known/acme-challenge/ dostupné cez obyčajné HTTP), záznam DNS ukazuje na iný server alebo bol po mnohých neúspešných pokusoch dosiahnutý rate limit. Opravte príčinu a spúšťajte sudo certbot renew --dry-run, kým nepreprejde.
2. Zautomatizujte opätovné načítanie
# Debian/Ubuntu: certbot inštaluje časovač; skontrolujte ho
systemctl list-timers | grep certbot
# pridajte deploy hook, aby webový server prevzal nový certifikát
printf '#!/bin/sh\nsystemctl reload nginx\n' | sudo tee /etc/letsencrypt/renewal-hooks/deploy/reload-web.sh
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-web.sh
3. Pridajte chýbajúci názov
sudo certbot --nginx -d example.com -d www.example.com -d shop.example.com --expand
Príznak --expand nahradí existujúci certifikát takým, ktorý pokrýva všetky uvedené názvy.
4. Opravte reťaz
S certbotom nasmerujte webový server na fullchain.pem, nikdy na cert.pem:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
Apache: SSLCertificateFile s fullchain.pem. Pri zakúpenom certifikáte stiahnite sprostredkujúci certifikát („CA bundle“) od vydavateľa a pripojte ho k súboru certifikátu. Otestujte cez sudo nginx -t (Apache: sudo apachectl configtest), načítajte znova a potom reťaz skontrolujte kontrolou SSL.
5. Opravte hodiny
sudo timedatectl set-ntp true
timedatectl
Server, ktorého hodiny sa líšia o viac než niekoľko minút, zlyháva pri overovaní certifikátov v oboch smeroch.
6. Zdieľaný hosting alebo nástroj na tvorbu webov
Väčšina poskytovateľov vydáva a obnovuje certifikáty Let's Encrypt z ovládacieho panela („SSL/TLS“, „Zabezpečenie“, „Let's Encrypt“). Otvorte ho, skontrolujte, že certifikát pokrýva example.com aj www.example.com, a kliknite na obnoviť alebo vydať znova. Ak panel hovorí, že certifikát je platný, ale prehliadače nesúhlasia, poskytovateľ má na svojej strane problém s opätovným načítaním alebo reťazou.
Keď je to problém vášho poskytovateľa
Dobrý deň, približne od 06:00 UTC prehliadače zobrazujú pre môj web example.com „Vaše pripojenie nie je súkromné“ (NET::ERR_CERT_DATE_INVALID). Ovládací panel ukazuje platný certifikát, takže webový server pravdepodobne podáva starý. Mohli by ste na serveri znova načítať certifikát a skontrolovať automatické obnovovanie pre moju doménu?
Ako predísť ďalšej
Vypršaný certifikát je jediný výpadok so známym dátumom. Monitoring SSL certifikátov vás upozorní pred vypršaním a znova, ak je reťaz alebo názov zlý; 5 kontrol je zadarmo. Na vlastnom serveri Quick Fix obnoví certifikát tam, kde je nastavený certbot, a znova načíta webový server, za pevnú cenu; Deep Fix nastaví obnovovanie tam, kde ešte žiadne nie je.
Čo ďalej
Skontrolujte certifikát
Dátum vypršania, reťaz a názov hostiteľa ľubovoľného certifikátu za pár sekúnd. Zdarma, bez registrácie.
Kontrola SSLNefunguje? Zasiahneme.
Na vlastnom serveri alebo vo webhostingu s prístupom cez SSH: Quick Fix za pevnú cenu pri bežných príčinách, Deep Fix účtovaný po 15-minútových blokoch pri ostatných, nepretržite. Cena pred objednaním.
Nechať to opraviťĎalšie návody
- Váš web nefunguje. Čo robiť v prvých 15 minútach.
- Server nefunguje: čo skontrolovať ako prvé a v akom poradí
- Chyba 502 Bad Gateway: príčiny a oprava
- Chyba 503 Service Unavailable: preťaženie alebo údržba?
- Chyba 504 Gateway Timeout: čo znamená a ako ju opraviť
- DNS_PROBE_FINISHED_NXDOMAIN: príčiny a opravy
- ERR_CONNECTION_REFUSED: príčiny a oprava