„Vaše připojení není soukromé“: varování o SSL certifikátu
· 6 min čtení
Co chyba znamená
Prohlížeč se připojil k serveru, server předložil svůj certifikát a prohlížeč mu odmítl důvěřovat. Chrome zobrazí „Your connection is not private“ s kódem chyby pod tím; Firefox „Warning: Potential Security Risk Ahead“; Safari „This Connection Is Not Private“. Web není napadený a váš počítač není infikovaný; certifikát, který server poslal, neprojde kontrolami, které prohlížeč provádí.
Kód chyby říká, která kontrola selhala:
NET::ERR_CERT_DATE_INVALID: certifikát vypršel, nebo jeho datum začátku leží v budoucnosti (nebo jsou špatné hodiny návštěvníka).NET::ERR_CERT_COMMON_NAME_INVALID: certifikát je pro jiné jméno, například prowww.example.com, ale ne proexample.com.NET::ERR_CERT_AUTHORITY_INVALID: prohlížeč nedokáže vysledovat certifikát k důvěryhodné autoritě: samopodepsaný, neznámý vydavatel nebo chybějící zprostředkující certifikát.NET::ERR_CERT_REVOKED: certifikát byl vydavatelem odvolán.SSL_ERROR_BAD_CERT_DOMAINaSEC_ERROR_EXPIRED_CERTIFICATEjsou verze chyb jména a data ve Firefoxu.
Časté příčiny
- Certifikát vypršel. Certifikáty Let's Encrypt platí 90 dní; automatická obnova týdny selhávala a nikdo si toho nevšiml až do dne, kdy vypršel. Placené certifikáty vyprší po roce a e-mail s připomenutím obnovy šel na starou adresu.
- Obnoven, ale nenačten znovu. certbot zapsal nový certifikát na disk, ale webový server stále z paměti poskytuje starý, protože chybí háček pro reload.
- Špatné jméno. Certifikát pokrývá
example.com, ale návštěvníci přicházejí nawww.example.com, nebo byla přidána nová subdoména bez certifikátu. - Chybějící zprostředkující certifikát. Server posílá jen svůj vlastní certifikát, ne řetězec. Desktopové prohlížeče často mezeru doplní z cache; telefony a aplikace selžou.
- Problém s hodinami. Na počítači návštěvníka špatné datum způsobí, že každý certifikát vypadá jako prošlý nebo ještě neplatný. Na serveru špatné hodiny rozbijí obnovu.
- CDN nebo proxy vpředu s vlastním certifikátem, který vypršel nebo nepokrývá jméno, zatímco původní server je v pořádku.
Pokud jste návštěvník
Nejdřív zkontrolujte datum a čas svého počítače; vybitá baterie CMOS nebo vypnutá synchronizace času způsobí, že selže každý web. Pak zkuste jinou síť. Pokud se varování objevuje jen u jednoho webu a na každém zařízení, problémem je certifikát webu a majitel to musí opravit. Proklik přes „Proceed to site (unsafe)“ je u webu, který znáte, v pořádku, u ničeho s přihlášením nebo platbou ne.
Pokud jde o váš web: nejdřív zkontrolujte
Spusťte kontrolu SSL. Ukáže datum vypršení, jména, pro která je certifikát platný, a zda je řetězec úplný, zvenčí, bez jakékoli cache prohlížeče. Pak na vlastním serveru:
# what does the server actually send?
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subject -ext subjectAltName
# what is on disk?
sudo certbot certificates
# is the server clock right?
timedatectl
Pokud jsou data na disku novější než data, která server posílá, máte případ 2: obnoveno, ale nenačteno znovu.
Opravy na vlastním serveru
1. Obnovte přes certbot
sudo certbot renew
# or, if renew says "not yet due" but the served certificate is old:
sudo certbot renew --force-renewal
sudo systemctl reload nginx # or apache2
Pokud obnova selže, výstup říká proč. Obvyklé důvody: port 80 je blokován nebo přesměrován někam, kam certbot nečeká (výzva HTTP-01 vyžaduje, aby bylo /.well-known/acme-challenge/ dosažitelné přes prosté HTTP), záznam DNS míří na jiný server, nebo byl po mnoha neúspěšných pokusech dosažen rate limit. Opravte příčinu a spouštějte sudo certbot renew --dry-run, dokud neprojde.
2. Zajistěte automatický reload
# Debian/Ubuntu: certbot installs a timer; check it
systemctl list-timers | grep certbot
# add a deploy hook so the web server picks up the new certificate
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. Přidejte chybějící jméno
sudo certbot --nginx -d example.com -d www.example.com -d shop.example.com --expand
Příznak --expand nahradí stávající certifikát certifikátem, který pokrývá všechna uvedená jména.
4. Opravte řetězec
S certbotem nasměrujte 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. U zakoupeného certifikátu stáhněte od vydavatele zprostředkující certifikát („CA bundle“) a připojte ho k souboru certifikátu. Otestujte pomocí sudo nginx -t (Apache: sudo apachectl configtest), načtěte znovu a pak zkontrolujte řetězec pomocí kontroly SSL.
5. Opravte hodiny
sudo timedatectl set-ntp true
timedatectl
Server, jehož hodiny se liší o více než několik minut, selhává při ověřování certifikátů v obou směrech.
6. Sdílený hosting nebo tvůrce webů
Většina poskytovatelů vydává a obnovuje certifikáty Let's Encrypt z ovládacího panelu („SSL/TLS“, „Security“, „Let's Encrypt“). Otevřete ho, zkontrolujte, že certifikát pokrývá example.com i www.example.com, a klikněte na obnovit nebo znovu vydat. Pokud panel říká, že je certifikát platný, ale prohlížeče nesouhlasí, má poskytovatel na své straně problém s reloadem nebo řetězcem.
Když je to problém poskytovatele hostingu
Dobrý den, přibližně od 06:00 UTC zobrazují prohlížeče pro můj web example.com „Your connection is not private“ (NET::ERR_CERT_DATE_INVALID). Ovládací panel ukazuje platný certifikát, takže webový server zřejmě poskytuje starý. Mohli byste na serveru znovu načíst certifikát a zkontrolovat automatickou obnovu pro mou doménu?
Jak předejít dalšímu
Vypršelý certifikát je jediný výpadek se známým datem. Monitoring SSL certifikátů vás varuje před vypršením a znovu, pokud je řetězec nebo jméno špatné; 5 kontrol je zdarma. Na vlastním serveru Quick Fix obnoví certifikát tam, kde je nastaven certbot, a znovu načte webový server, za pevnou cenu; Deep Fix nastaví obnovu tam, kde zatím žádná není.
Co dál
Zkontrolujte certifikát
Datum vypršení, řetězec a název hostitele libovolného certifikátu během několika sekund. Zdarma, bez registrace.
Kontrola SSLVýpadek? Zasáhneme.
Na vlastním serveru nebo ve webhostingu s přístupem přes SSH: Quick Fix za pevnou cenu pro běžné příčiny, Deep Fix účtovaný po 15minutových blocích pro zbytek, nonstop. Cena před objednáním.
Nechat opravitDalší průvodci
- Váš web nejede. Co dělat v prvních 15 minutách.
- Server nejede: co zkontrolovat jako první a v jakém pořadí
- 502 Bad Gateway: příčiny a jak to opravit
- 503 Service Unavailable: přetížení, nebo údržba?
- 504 Gateway Timeout: co znamená a jak to opravit
- DNS_PROBE_FINISHED_NXDOMAIN: příčiny a opravy
- ERR_CONNECTION_REFUSED: příčiny a jak to opravit