"Bağlantınız gizli değil": SSL sertifikası uyarısı
· 6 dk okuma
Hata ne anlama gelir
Tarayıcı sunucuya bağlandı, sunucu sertifikasını sundu ve tarayıcı ona güvenmeyi reddetti. Chrome altında bir hata koduyla "Bağlantınız gizli değil" gösterir; Firefox "Uyarı: Olası Güvenlik Riski İlerde", Safari "Bu Bağlantı Gizli Değil". Site hacklenmemiştir ve bilgisayarınız enfekte değildir; sunucunun gönderdiği sertifika, bir tarayıcının yaptığı kontrolleri geçemiyor.
Hata kodu hangi kontrolün başarısız olduğunu söyler:
NET::ERR_CERT_DATE_INVALID: sertifikanın süresi dolmuş ya da başlangıç tarihi gelecekte (veya ziyaretçinin saati yanlış).NET::ERR_CERT_COMMON_NAME_INVALID: sertifika başka bir ad için, örneğinwww.example.comiçin amaexample.comiçin değil.NET::ERR_CERT_AUTHORITY_INVALID: tarayıcı sertifikayı güvenilir bir otoriteye kadar izleyemiyor: kendinden imzalı, bilinmeyen bir veren veya eksik bir ara sertifika.NET::ERR_CERT_REVOKED: sertifika vereni tarafından iptal edilmiş.SSL_ERROR_BAD_CERT_DOMAINveSEC_ERROR_EXPIRED_CERTIFICATE, ad ve tarih hatalarının Firefox sürümleridir.
Yaygın nedenler
- Sertifikanın süresi doldu. Let's Encrypt sertifikaları 90 gün geçerlidir; otomatik yenileme haftalarca başarısız oldu ve süresi dolduğu güne kadar kimse fark etmedi. Ücretli sertifikaların süresi bir yıl sonra dolar ve yenileme e-postası eski bir adrese gitti.
- Yenilendi ama yeniden yüklenmedi. certbot yeni sertifikayı diske yazdı, ancak yeniden yükleme kancası eksik olduğu için web sunucusu hâlâ eskisini bellekten sunuyor.
- Yanlış ad. Sertifika
example.comadını kapsıyor ama ziyaretçilerwww.example.comadresine geliyor ya da sertifikasız yeni bir alt alan adı eklendi. - Eksik ara sertifika. Sunucu zinciri değil, yalnızca kendi sertifikasını gönderiyor. Masaüstü tarayıcılar boşluğu çoğunlukla önbellekten doldurur; telefonlar ve uygulamalar başarısız olur.
- Bir saat sorunu. Ziyaretçinin bilgisayarında yanlış bir tarih her sertifikayı süresi dolmuş veya henüz geçerli değil gösterir. Sunucuda yanlış bir saat yenilemeyi bozar.
- Önde kendi sertifikası olan bir CDN veya proxy; sertifikanın süresi dolmuş ya da adı kapsamıyor, oysa kaynak iyi.
Ziyaretçiyseniz
Önce bilgisayarınızın tarih ve saatini kontrol edin; ölü bir CMOS pili veya kapalı bir saat eşitlemesi her siteyi başarısız kılar. Sonra başka bir ağ deneyin. Uyarı yalnızca bir sitede ve her cihazda görünüyorsa sorun sitenin sertifikasıdır ve sahibi düzeltmelidir. "Siteye devam et (güvenli değil)" seçeneğine tıklamak tanıdığınız bir site için sorun değildir; bir oturum açma veya ödeme içeren herhangi bir şey için değildir.
Kendi siteniz ise: önce kontrol edin
SSL kontrolünü çalıştırın. Son kullanma tarihini, sertifikanın geçerli olduğu adları ve zincirin eksiksiz olup olmadığını dışarıdan, hiçbir tarayıcı önbelleği olmadan gösterir. Sonra kendi sunucunuzda:
# sunucu aslında ne gönderiyor?
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates -subject -ext subjectAltName
# diskte ne var?
sudo certbot certificates
# sunucu saati doğru mu?
timedatectl
Diskteki tarihler sunucunun gönderdiği tarihlerden daha yeniyse 2. durumdasınız: yenilendi ama yeniden yüklenmedi.
Kendi sunucunuzda çözümler
1. certbot ile yenileyin
sudo certbot renew
# veya renew "not yet due" diyor ama sunulan sertifika eskiyse:
sudo certbot renew --force-renewal
sudo systemctl reload nginx # veya apache2
Yenileme başarısız olursa çıktı nedenini söyler. Olağan nedenler: 80 portu engellenmiş veya certbot'un beklemediği bir yere yönlendirilmiş (HTTP-01 doğrulaması için /.well-known/acme-challenge/ düz HTTP üzerinden erişilebilir olmalıdır), DNS kaydı başka bir sunucuyu gösteriyor veya çok sayıda başarısız denemeden sonra bir hız sınırına ulaşıldı. Nedeni düzeltin ve geçene kadar sudo certbot renew --dry-run çalıştırın.
2. Yeniden yüklemeyi otomatik yapın
# Debian/Ubuntu: certbot bir zamanlayıcı kurar; kontrol edin
systemctl list-timers | grep certbot
# web sunucusunun yeni sertifikayı alması için bir dağıtım kancası ekleyin
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. Eksik adı ekleyin
sudo certbot --nginx -d example.com -d www.example.com -d shop.example.com --expand
--expand bayrağı mevcut sertifikayı, listelenen tüm adları kapsayan bir sertifikayla değiştirir.
4. Zinciri düzeltin
certbot ile web sunucusunu cert.pem'e değil, her zaman fullchain.pem'e yönlendirin:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
Apache: SSLCertificateFile ile fullchain.pem. Satın alınmış bir sertifikayla, ara sertifikayı ("CA bundle") vereninden indirin ve sertifika dosyasının sonuna ekleyin. sudo nginx -t (Apache: sudo apachectl configtest) ile test edin, yeniden yükleyin, sonra zinciri SSL kontrolü ile kontrol edin.
5. Saati düzeltin
sudo timedatectl set-ntp true
timedatectl
Saati birkaç dakikadan fazla sapmış bir sunucu, sertifika doğrulamasında her iki yönde de başarısız olur.
6. Paylaşımlı hosting veya site oluşturucu
Çoğu hosting firması Let's Encrypt sertifikalarını kontrol panelinden ("SSL/TLS", "Güvenlik", "Let's Encrypt") düzenler ve yeniler. Açın, sertifikanın hem example.com hem de www.example.com adını kapsadığını kontrol edin ve yenile veya yeniden düzenle düğmesine tıklayın. Panel sertifikanın geçerli olduğunu söylüyor ama tarayıcılar aynı fikirde değilse, hosting firmasında kendi tarafında bir yeniden yükleme veya zincir sorunu vardır.
Sorun hosting firmanızdaysa
Merhaba, yaklaşık 06:00 UTC'den beri tarayıcılar example.com web sitem için "Bağlantınız gizli değil" (NET::ERR_CERT_DATE_INVALID) gösteriyor. Kontrol paneli geçerli bir sertifika gösteriyor, yani web sunucusu eski bir sertifikayı sunuyor gibi görünüyor. Lütfen sertifikayı sunucuda yeniden yükleyip alan adım için otomatik yenilemeyi kontrol edebilir misiniz?
Bir sonrakini önlemek
Süresi dolmuş bir sertifika, tarihi bilinen tek kesintidir. SSL sertifikası izleme sizi son kullanma tarihinden önce ve zincir veya ad yanlışsa yeniden uyarır; 5 kontrol ücretsizdir. Kendi sunucunuzda bir Quick Fix, certbot'un kurulu olduğu yerde sertifikayı yeniler ve web sunucusunu sabit fiyatla yeniden yükler; bir Deep Fix de henüz yenileme olmayan yerde yenilemeyi kurar.
Şimdi ne yapmalı
Sertifikayı kontrol edin
Herhangi bir sertifikanın son kullanma tarihi, zinciri ve ana bilgisayar adı saniyeler içinde. Ücretsiz, kayıt gerekmez.
SSL kontrolüÇöktü mü? Devreye gireriz.
Kendi sunucunuzda veya SSH erişimi olan bir hosting alanında: yaygın nedenler için sabit fiyatlı bir Quick Fix, gerisi için 15 dakikalık bloklar hâlinde faturalanan bir Deep Fix, günün her saatinde. Fiyatı sipariş vermeden önce görürsünüz.
Onarımı yaptırınDiğer rehberler
- Web siteniz çöktü. İlk 15 dakikada yapmanız gerekenler.
- Sunucu çöktü: önce neye bakmalı ve hangi sırayla
- 502 Bad Gateway: nedenleri ve nasıl çözülür
- 503 Service Unavailable: aşırı yük mü, bakım mı?
- 504 Gateway Timeout: ne anlama gelir ve nasıl çözülür
- DNS_PROBE_FINISHED_NXDOMAIN: nedenleri ve çözümleri
- ERR_CONNECTION_REFUSED: nedenleri ve nasıl çözülür