„Conexiunea nu este privată”: avertismentul certificatului SSL
· 6 minute de citit
Ce înseamnă eroarea
Browserul s-a conectat la server, serverul și-a prezentat certificatul, iar browserul a refuzat să aibă încredere în el. Chrome afișează „Conexiunea nu este privată” cu un cod de eroare dedesubt; Firefox „Avertisment: potențial risc de securitate înainte”; Safari „Această conexiune nu este privată”. Site-ul nu este spart și calculatorul tău nu este infectat; certificatul trimis de server nu trece verificările pe care le face un browser.
Codul de eroare îți spune care verificare a eșuat:
NET::ERR_CERT_DATE_INVALID: certificatul a expirat sau data lui de început este în viitor (sau ceasul vizitatorului este greșit).NET::ERR_CERT_COMMON_NAME_INVALID: certificatul este pentru un alt nume, de exemplu pentruwww.example.com, dar nu pentruexample.com.NET::ERR_CERT_AUTHORITY_INVALID: browserul nu poate urmări certificatul până la o autoritate de încredere: autosemnat, un emitent necunoscut sau un certificat intermediar lipsă.NET::ERR_CERT_REVOKED: certificatul a fost revocat de emitentul lui.SSL_ERROR_BAD_CERT_DOMAINșiSEC_ERROR_EXPIRED_CERTIFICATEsunt versiunile Firefox ale erorilor de nume și de dată.
Cauze frecvente
- Certificatul a expirat. Certificatele Let's Encrypt sunt valabile 90 de zile; reînnoirea automată a eșuat săptămâni la rând și nimeni nu a observat până în ziua în care a expirat. Certificatele plătite expiră după un an, iar e-mailul de reînnoire a ajuns la o adresă veche.
- Reînnoit, dar nereîncărcat. certbot a scris noul certificat pe disc, dar serverul web îl servește în continuare pe cel vechi din memorie, pentru că lipsește hook-ul de reîncărcare.
- Nume greșit. Certificatul acoperă
example.com, dar vizitatorii ajung lawww.example.com, sau a fost adăugat un subdomeniu nou fără certificat. - Certificat intermediar lipsă. Serverul trimite doar propriul certificat, nu și lanțul. Browserele desktop umplu adesea golul din cache; telefoanele și aplicațiile eșuează.
- O problemă de ceas. Pe calculatorul vizitatorului, o dată greșită face ca fiecare certificat să pară expirat sau încă nevalid. Pe server, un ceas greșit strică reînnoirea.
- Un CDN sau proxy în față cu propriul certificat care a expirat sau nu acoperă numele, în timp ce originea este în regulă.
Dacă ești vizitator
Verifică mai întâi data și ora calculatorului tău; o baterie CMOS moartă sau o sincronizare a timpului dezactivată face ca fiecare site să eșueze. Apoi încearcă altă rețea. Dacă avertismentul apare doar la un site și pe fiecare dispozitiv, certificatul site-ului este problema, iar proprietarul trebuie să o repare. A da clic pe „Continuă către site (nesigur)” este în regulă pentru un site pe care îl cunoști, nu pentru ceva cu autentificare sau cu plată.
Dacă e site-ul tău: verifică mai întâi
Rulează SSL checker. Arată data expirării, numele pentru care este valid certificatul și dacă lanțul este complet, din exterior, fără niciun cache de browser. Apoi, pe propriul server:
# ce trimite de fapt serverul?
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subject -ext subjectAltName
# ce este pe disc?
sudo certbot certificates
# ceasul serverului este corect?
timedatectl
Dacă datele de pe disc sunt mai noi decât datele pe care le trimite serverul, ești în cazul 2: reînnoit, dar nereîncărcat.
Remedieri pe propriul server
1. Reînnoiește cu certbot
sudo certbot renew
# sau, dacă renew spune „not yet due”, dar certificatul servit este vechi:
sudo certbot renew --force-renewal
sudo systemctl reload nginx # sau apache2
Dacă reînnoirea eșuează, ieșirea spune de ce. Motivele obișnuite: portul 80 este blocat sau redirecționat undeva unde certbot nu se așteaptă (provocarea HTTP-01 are nevoie ca /.well-known/acme-challenge/ să fie accesibil prin HTTP simplu), înregistrarea DNS indică un alt server sau s-a atins o limită de rată după multe încercări eșuate. Repară cauza și rulează sudo certbot renew --dry-run până trece.
2. Fă reîncărcarea automată
# Debian/Ubuntu: certbot instalează un timer; verifică-l
systemctl list-timers | grep certbot
# adaugă un deploy hook ca serverul web să preia noul certificat
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. Adaugă numele lipsă
sudo certbot --nginx -d example.com -d www.example.com -d shop.example.com --expand
Opțiunea --expand înlocuiește certificatul existent cu unul care acoperă toate numele listate.
4. Repară lanțul
Cu certbot, îndreaptă serverul web către fullchain.pem, niciodată către cert.pem:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
Apache: SSLCertificateFile cu fullchain.pem. Cu un certificat cumpărat, descarcă certificatul intermediar („CA bundle”) de la emitent și adaugă-l la fișierul certificatului. Testează cu sudo nginx -t (Apache: sudo apachectl configtest), reîncarcă, apoi verifică lanțul cu SSL checker.
5. Repară ceasul
sudo timedatectl set-ntp true
timedatectl
Un server al cărui ceas este decalat cu mai mult de câteva minute eșuează la validarea certificatelor în ambele direcții.
6. Hosting partajat sau site builder
Majoritatea furnizorilor emit și reînnoiesc certificate Let's Encrypt din panoul de control („SSL/TLS”, „Security”, „Let's Encrypt”). Deschide-l, verifică dacă certificatul acoperă atât example.com, cât și www.example.com și apasă pe reînnoire sau reemitere. Dacă panoul spune că certificatul este valid, dar browserele nu sunt de acord, furnizorul are o problemă de reîncărcare sau de lanț de partea lui.
Când e problema furnizorului tău de hosting
Bună ziua, începând cu aproximativ 06:00 UTC browserele afișează „Conexiunea nu este privată” (NET::ERR_CERT_DATE_INVALID) pentru site-ul meu example.com. Panoul de control arată un certificat valid, deci serverul web pare să servească unul vechi. Ați putea reîncărca certificatul pe server și verifica reînnoirea automată pentru domeniul meu?
Prevenirea următorului
Un certificat expirat este singura cădere cu o dată cunoscută. Monitorizarea certificatelor SSL te avertizează înainte de expirare și din nou dacă lanțul sau numele sunt greșite; 5 verificări sunt gratuite. Pe propriul server, un Quick Fix reînnoiește certificatul acolo unde certbot este configurat și reîncarcă serverul web, la preț fix; un Deep Fix configurează reînnoirea acolo unde nu există încă.
Și acum
Verifică certificatul
Data expirării, lanțul și numele de gazdă ale oricărui certificat în câteva secunde. Gratuit, fără înregistrare.
Verificator SSLCăzut? Intervenim.
Pe propriul server sau într-un spațiu cu acces SSH: un Quick Fix la preț fix pentru cauzele frecvente, un Deep Fix facturat în blocuri de 15 minute pentru restul, non-stop. Prețul îl vezi înainte să comanzi.
Cere o reparațieMai multe ghiduri
- Site-ul tău e căzut. Iată ce faci în primele 15 minute.
- Server căzut: ce verifici mai întâi și în ce ordine
- Eroarea 502 Bad Gateway: cauze și remediere
- 503 Service Unavailable: suprasolicitat sau în mentenanță?
- 504 Gateway Timeout: ce înseamnă și cum se repară
- DNS_PROBE_FINISHED_NXDOMAIN: cauze și remedieri
- ERR_CONNECTION_REFUSED: cauze și cum se repară