SSL sertifikası

Bağlantınız Gizli Değil Hatası: Nedenleri ve Çözümü

Bağlantınız gizli değil hatası, tarayıcının sitenin SSL sertifikasını doğrulayamadığı anlamına gelir. Sorun çoğu zaman sitededir: sertifikanın süresi dolmuş, alan adıyla uyuşmuyor ya da eksik kurulmuştur. Bazen de sorun ziyaretçinin cihazındadır; en sık neden, bilgisayarın veya telefonun saatinin yanlış olmasıdır.

Bu yazıda hatayı iki açıdan ele alıyoruz: siteyi ziyaret eden kişi ne yapmalı, sitenin sahibi neyi kontrol etmeli.

Bağlantınız gizli değil hatası ne anlama gelir?

Bir siteye HTTPS ile bağlandığınızda sunucu tarayıcıya bir SSL (TLS) sertifikası gösterir. Bu sertifika, "bu site gerçekten bu alan adına ait ve bağlantı şifreli" diyen dijital bir kimlik belgesidir. Tarayıcı bu belgenin süresine, hangi alan adı için verildiğine ve güvenilir bir sertifika otoritesi (CA) tarafından imzalanıp imzalanmadığına bakar.

Bu kontrollerden biri başarısız olursa Chrome ve Edge "Bağlantınız gizli değil", Safari "Bu bağlantı gizli değil" benzeri bir uyarı gösterir; Firefox'ta uyarının başlığı farklıdır ama anlamı aynıdır. Uyarının altındaki küçük hata kodu, sorunun nerede olduğunu anlamanın anahtarıdır.

Hata kodları ve anlamları

Chrome / Edge koduFirefox karşılığıGenellikle anlamı
NET::ERR_CERT_DATE_INVALIDSEC_ERROR_EXPIRED_CERTIFICATESertifikanın süresi dolmuş ya da cihaz saati yanlış
NET::ERR_CERT_COMMON_NAME_INVALIDSSL_ERROR_BAD_CERT_DOMAINSertifika bu alan adı için verilmemiş
NET::ERR_CERT_AUTHORITY_INVALIDSEC_ERROR_UNKNOWN_ISSUERKendinden imzalı sertifika, güvenilmeyen CA veya eksik zincir
NET::ERR_CERT_REVOKEDSEC_ERROR_REVOKED_CERTIFICATESertifika, veren kurum tarafından iptal edilmiş

Kodu görmek için uyarı sayfasındaki "Gelişmiş" düğmesine tıklayabilir ya da kodun kendisine tıklayarak ayrıntıları açabilirsiniz. Kodların yazımı tarayıcı sürümüne göre küçük farklar gösterebilir.

Ziyaretçiyseniz: önce kendi cihazınızı kontrol edin

Başka sitelerde de aynı hatayı görüyorsanız sorun büyük olasılıkla sizin tarafınızdadır. Sırasıyla şunlara bakın:

  1. Cihaz saati ve tarihi: Saat yanlışsa tarayıcı geçerli sertifikaları da "süresi dolmuş" ya da "henüz geçerli değil" sayar. Tarih ve saati otomatik ayara alın.
  2. Antivirüs veya güvenlik yazılımı: Bazı yazılımlar HTTPS trafiğini incelemek için araya kendi sertifikalarını koyar. Bu özellik bozulduğunda her sitede hata görebilirsiniz. Yazılımın "HTTPS tarama" ya da "şifreli bağlantı tarama" ayarını geçici olarak kapatıp deneyin.
  3. Genel Wi-Fi: Otel, kafe veya havalimanı ağları, giriş sayfasını göstermek için bağlantıya müdahale edebilir. Önce ağın giriş sayfasını açın ya da mobil veriye geçip tekrar deneyin.
  4. Tarayıcı ve işletim sistemi güncelliği: Çok eski sistemler güncel kök sertifikaları tanımayabilir. Tarayıcınızı ve sisteminizi güncelleyin.
  5. Önbellek: Tarayıcıyı kapatıp açın ya da gizli pencerede deneyin.

Uyarıyı "Gelişmiş" üzerinden geçip siteye girmek çoğu tarayıcıda mümkündür, ama bu durumda o sitede parola, kart bilgisi veya kişisel bilgi girmeyin. Bazı siteler (HSTS kullananlar) bu geçişe hiç izin vermez.

Site sahibiyseniz: dört yaygın neden

Ziyaretçileriniz size "siteniz güvensiz görünüyor" diyorsa sorun büyük olasılıkla sertifikanızdadır. Önce hangi hatayı aldığınızı öğrenin, sonra aşağıdaki nedenleri tek tek eleyin.

1. Sertifikanın süresi dolmuş

En sık karşılaşılan neden budur ve NET::ERR_CERT_DATE_INVALID koduyla görünür. Otomatik yenileme kurulu olsa bile yenileme sessizce başarısız olmuş olabilir. Bitiş tarihini şu komutla kontrol edin:

openssl s_client -connect alanadi.com:443 -servername alanadi.com </dev/null 2>/dev/null | openssl x509 -noout -dates -issuer

notAfter satırı bugünden önceyse sertifikanız dolmuştur. Diğer yöntemler için SSL sertifikası bitiş tarihi kontrolü rehberimize bakabilirsiniz.

2. Alan adı uyuşmazlığı

Sertifika alanadi.com için alınmış ama ziyaretçi www.alanadi.com adresine giriyorsa (ya da tersi) tarayıcı NET::ERR_CERT_COMMON_NAME_INVALID hatası verir. Aynı durum, bir alt alan adını yanlış sunucuya yönlendirdiğinizde de olur. Sertifikanın hangi adları kapsadığını görmek için:

openssl s_client -connect alanadi.com:443 -servername alanadi.com </dev/null 2>/dev/null | openssl x509 -noout -text | grep -A1 "Subject Alternative Name"

Ziyaretçinin girdiği ad bu listede yoksa sertifikayı o adı da kapsayacak şekilde yeniden almanız gerekir.

3. Eksik ara sertifika zinciri

Sertifika otoriteleri sitenizin sertifikasını doğrudan kök sertifikayla değil, bir veya daha fazla "ara sertifika" üzerinden imzalar. Sunucunuz yalnızca kendi sertifikasını gönderip ara sertifikayı göndermezse zincir tamamlanmaz. Bazı masaüstü tarayıcılar eksik parçayı kendisi bulabildiği için sorun sizin bilgisayarınızda görünmeyebilir, ama başka tarayıcılarda, telefonlarda ya da uygulamalarda hata çıkar.

Zinciri kontrol etmek için komut çıktısının sonundaki doğrulama satırına bakın:

openssl s_client -connect alanadi.com:443 -servername alanadi.com </dev/null 2>/dev/null | grep "Verify return code"

0 (ok) sonucu zincirin sorunsuz olduğunu gösterir. 21 (unable to verify the first certificate) genellikle eksik ara sertifikaya işaret eder. Çözüm, sunucuya yalnızca sertifika dosyasını değil tam zinciri (Let's Encrypt'te fullchain.pem) tanıtmaktır.

4. Kendinden imzalı sertifika

Kendinden imzalı (self-signed) sertifika, herhangi bir sertifika otoritesinin onaylamadığı, sunucuda elle üretilmiş sertifikadır. Test ortamında işe yarar, ama gerçek ziyaretçiler için her zaman hata üretir. Doğrulama satırında 18 (self signed certificate) görürsünüz. Çözüm, Let's Encrypt gibi ücretsiz bir otoriteden ya da hosting firmanızdan geçerli bir sertifika almaktır.

Çözüm adımları: site sahibi için kontrol listesi

  1. Hata kodunu not edin ve sorunu farklı cihaz ve tarayıcılarda deneyin.
  2. openssl ile bitiş tarihine, kapsanan adlara ve doğrulama sonucuna bakın.
  3. Süre dolduysa sertifikayı yenileyin: hosting panelinizdeki SSL bölümünden ya da sunucuda certbot renew ile.
  4. Yeniledikten sonra web sunucusunu (nginx, Apache) yeniden yükleyin; aksi hâlde eski sertifika sunulmaya devam edebilir.
  5. Sunucu ayarında tam zincir dosyasının kullanıldığından emin olun.
  6. www ve kullandığınız tüm alt alan adlarının sertifikada yer aldığını doğrulayın.
  7. CDN kullanıyorsanız hem CDN'deki hem de asıl sunucudaki sertifikayı kontrol edin.
  8. Düzeldikten sonra tarayıcı önbelleğini temizleyip tekrar deneyin.

Site hiç açılmıyorsa ve sorun sertifikayla ilgili görünmüyorsa site açılmıyor: nedenler ve kontrol listesi yazımız işinize yarayabilir.

Önleme: hatayı ziyaretçiden önce görmek

Bu hatanın en can sıkıcı yanı, çoğu zaman site sahibinin sorunu en son öğrenmesidir. Otomatik yenileme varsa "nasılsa yenileniyor" diye düşünülür; ama cron görevi durabilir, DNS değişebilir, sunucu taşınabilir. Let's Encrypt'in süre dolumu e-postalarını da artık göndermediğini unutmayın; ayrıntılar Let's Encrypt süre dolumu uyarısı yazımızda.

Önlemek için bitiş tarihini sunucudan bağımsız bir yerden izlemek gerekir. Bulut Domain, eklediğiniz alan adlarının SSL sertifikası bitiş tarihini ve vereni düzenli okur; süre dolmadan kademeli olarak, dolduğu gün ve sonrasında e-posta ve site içi bildirimle uyarır. Ayrıca sitenin açılıp açılmadığını da yoklar ve art arda iki başarısız denemede haber verir.

Sık sorulan sorular

Bağlantınız gizli değil hatası virüs olduğu anlamına mı gelir?

Hayır, tek başına virüs anlamına gelmez. Tarayıcı yalnızca bağlantının güvenli olduğunu doğrulayamadığını söyler. Yine de doğrulanamayan bir bağlantıda hassas bilgi girmemek gerekir.

Hata yalnızca benim telefonumda çıkıyor, neden?

Önce telefonun tarih ve saatini kontrol edin. Saat doğruysa sitenin ara sertifika zinciri eksik olabilir; bazı masaüstü tarayıcılar bunu tolere ederken mobil cihazlar ve uygulamalar hata verebilir.

NET::ERR_CERT_DATE_INVALID nasıl düzelir?

Site sahibiyseniz sertifikayı yenileyip web sunucusunu yeniden yükleyin. Ziyaretçiyseniz ve hata birçok sitede çıkıyorsa cihazınızın saatini düzeltin.

Sertifikayı yeniledim ama hata sürüyor, neden?

Genellikle web sunucusu yeniden yüklenmemiştir, yeni sertifika yanlış sunucuya kurulmuştur ya da CDN hâlâ eski sertifikayı sunuyordur. openssl komutuyla sunulan sertifikanın tarihini yeniden kontrol edin.

Sertifika sorunlarını ziyaretçilerinizden önce öğrenmek için SSL ve alan adı bitiş tarihlerinizi tek listede izleyin: ücretsiz hesap oluşturun.

Bunu her ay elle kontrol etmeyin

Bulut Domain domain ve SSL bitiş tarihlerini kendiliğinden okur, sitenizin açık olup olmadığını düzenli yoklar; süre dolmadan önce kademeli olarak ve site kapandığında haber verir. Kurulum ya da sunucu erişimi gerekmez.

Ücretsiz hesap oluştur Nasıl çalışır