SSL Hataları ve Çözümleri: Tarayıcı Uyarılarını Giderme
SSL hataları, tarayıcının bir sitenin sertifikasını ya da şifreli bağlantısını doğrulayamadığında sayfayı durdurup gösterdiği uyarılardır; her biri, el sıkışma sırasında hangi kontrolün başarısız olduğunu bir hata koduyla bildirir. Kodu doğru okumak, sorunun sertifikada mı, sunucu yapılandırmasında mı, DNS’te mi yoksa ziyaretçinin cihazında mı olduğunu dakikalar içinde ayırmanızı sağlar.
Teşhis adımları, sertifika LIONFIN’den alınmış ticari bir ürün de olsa panelin ürettiği ücretsiz bir sertifika da olsa aynıdır. Çözüm yeni bir sertifika gerektiriyorsa SSL sertifikaları sayfasındaki seçeneklere bakabilirsiniz; kilit simgesi göründüğü hâlde “güvenli değil” uyarısı alıyorsanız neden büyük olasılıkla bir mixed content hatası olur.
Kısa cevap
Tarayıcı bir HTTPS bağlantısında sertifikanın süresini, adını, güven zincirini ya da TLS protokolünü doğrulayamadığında SSL hataları ortaya çıkar. En sık nedenler süresi dolmuş sertifika ya da yanlış cihaz saati (ERR_CERT_DATE_INVALID), ad uyuşmazlığı (ERR_CERT_COMMON_NAME_INVALID), eksik ara sertifika ya da kendinden imzalı sertifika (ERR_CERT_AUTHORITY_INVALID), 443 portunda şifresiz HTTP ve yönlendirme döngüsüdür. Teşhis için çoğu zaman openssl s_client ve curl -vI komutları yeterlidir.
SSL hataları neden çıkar?
SSL hataları, tarayıcının her HTTPS bağlantısında yaptığı dört temel kontrolden biri başarısız olduğunda çıkar: sertifikanın süresi geçerli mi, ziyaret edilen ad sertifikada var mı, sertifika güvenilir bir kök otoriteye eksiksiz bir zincirle bağlanıyor mu ve iki taraf ortak bir TLS sürümünde anlaşabiliyor mu? Bunlara sayfa düzeyindeki iki sorun eklenir: şifresiz kaynak yükleyen sayfalar (karışık içerik) ve HTTP ile HTTPS arasında gidip gelen yönlendirmeler.
Sorun her zaman sunucuda değildir. Yalnızca tek bir cihazda görülen hata çoğunlukla yanlış ayarlanmış sistem saatinden, HTTPS trafiğini inceleyen antivirüs ya da kurumsal güvenlik yazılımından veya otel ve kafe ağlarının giriş sayfalarından kaynaklanır. Bu yüzden ilk kontrol, aynı adresi başka bir cihazdan ve mobil veriden açmaktır; hata her yerde görünüyorsa sorun sitededir.
Hangi hata kodu ne anlama gelir?
Chrome ve Edge hata kodunu uyarı sayfasının altında gösterir; Firefox benzer durumlar için kendi kodlarını kullanır. En sık görülen kodlar ve ilk bakılacak yerler:
| Hata kodu | Olası neden | İlk bakılacak yer |
|---|---|---|
NET::ERR_CERT_DATE_INVALID (Firefox: SEC_ERROR_EXPIRED_CERTIFICATE) | Süresi dolmuş sertifika ya da yanlış cihaz saati | Sertifikanın bitiş tarihi, cihaz saati |
NET::ERR_CERT_COMMON_NAME_INVALID (Firefox: SSL_ERROR_BAD_CERT_DOMAIN) | Ziyaret edilen ad sertifikada yok: www ile çıplak alan adı ya da kapsam dışı alt alan adı | SAN listesi, DNS kaydı |
NET::ERR_CERT_AUTHORITY_INVALID (Firefox: SEC_ERROR_UNKNOWN_ISSUER) | Kendinden imzalı sertifika ya da eksik ara sertifika zinciri | Kurulu zincir, CA bundle |
ERR_SSL_PROTOCOL_ERROR | 443 portunda şifresiz HTTP ya da bozuk TLS yapılandırması | Web sunucusunun SSL ayarları |
SSL_ERROR_RX_RECORD_TOO_LONG (Firefox) | 443 portunun şifresiz HTTP yanıtı vermesi | Sanal sitenin 443 tanımı |
ERR_TOO_MANY_REDIRECTS | HTTP ile HTTPS arasında yönlendirme döngüsü, çoğu zaman proxy ya da CDN kaynaklı | CDN’in SSL modu, yönlendirme kuralları |
openssl s_client ve curl -vI ile hızlı teşhis
Uyarının ardındaki gerçek nedeni görmenin en hızlı yolu, sunucunun gönderdiği sertifika zincirini komut satırından incelemektir. -servername parametresi, aynı IP adresinde birden çok site varsa doğru sertifikanın istenmesini sağlar (SNI: Server Name Indication):
openssl s_client -connect ornek.com:443 -servername ornek.com -showcerts </dev/null
curl -vI https://ornek.com- Certificate chain:
0 s:satırı sunucu sertifikasıdır; altında1 s:ile başlayan en az bir ara sertifika görünmelidir. - Verify return code:
0 (ok)zincirin sorunsuz olduğunu gösterir;20ya da21eksik ara sertifikaya,10süresi dolmuş sertifikaya,18kendinden imzalı sertifikaya işaret eder. - curl çıktısı:
subject,expire datevesubjectAltNamesatırları sertifikanın kime ve ne zamana kadar verildiğini gösterir; doğrulama başarısızsaSSL certificate problemile başlayan satır hatanın kendisidir.
Komutları Linux ya da macOS terminalinde, Windows’ta ise WSL içinde çalıştırmak en tutarlı çıktıyı verir.
Sertifikanın süresi dolduysa ya da saat yanlışsa ne yapmalı?
ERR_CERT_DATE_INVALID her cihazda görünüyorsa sertifikanın süresi dolmuştur, yalnızca bir cihazda görünüyorsa o cihazın saati yanlıştır. Sunucudaki sertifikanın bitiş tarihini şu komut gösterir:
openssl s_client -connect ornek.com:443 -servername ornek.com </dev/null 2>/dev/null | openssl x509 -noout -enddateSertifika gerçekten dolmuşsa yenileme adımları ve otomatik yenilemenin neden durduğunu bulma yolları süresi dolan SSL sertifikasını yenileme rehberindedir. Bu hatayla eskisinden sık karşılaşmanız olası: 15 Mart 2026’dan sonra düzenlenen sertifikalar en fazla 200 gün geçerlidir ve bu sınır 15 Mart 2027’de 100, 15 Mart 2029’da 47 güne inecek. Let’s Encrypt de 2025’te süre dolumu uyarı e-postalarını göndermeyi bıraktı; otomasyonun çalıştığını bitiş tarihini izleyen bir kontrolle doğrulamanız gerekir. Saatten şüpheleniyorsanız cihazın tarih ve saat ayarlarında otomatik saat ve saat dilimi seçeneklerini açıp sayfayı yeniden deneyin.
Ad uyuşmazlığı (ERR_CERT_COMMON_NAME_INVALID) nasıl giderilir?
Bu hata, adres çubuğundaki ad sertifikanın SAN listesinde bulunmadığında çıkar; çözüm ya sertifikaya doğru adı eklemek ya da isteği doğru sunucuya yöneltmektir. Sertifikadaki adları görmek için:
openssl s_client -connect ornek.com:443 -servername ornek.com </dev/null 2>/dev/null | openssl x509 -noout -ext subjectAltName- www ile çıplak alan adı: Sertifika yalnızca
ornek.comiçin alınmış, ziyaretçiwww.ornek.comyazıyor ya da tersi. Sertifikaya iki adı da ekletin. - Kapsam dışı alt alan adı:
*.ornek.comsertifikasıa.b.ornek.comadresini kapsamaz; kural wildcard SSL nedir rehberinde anlatılır. - Başka sitenin sertifikası: Aynı IP’deki başka bir sitenin ya da sunucunun varsayılan sertifikası geliyorsa bu alan adı için 443 portunda tanımlı bir sanal site yoktur.
- DNS eski sunucuyu gösteriyor: Taşımadan sonra A kaydı hâlâ eski hostinge gidiyorsa yanıtı oradaki sertifika verir;
dig +short ornek.comile IP’yi kontrol edin.
Güvenilmeyen sertifika ve eksik zincir nasıl düzeltilir?
ERR_CERT_AUTHORITY_INVALID, tarayıcının sertifikayı güvendiği bir kök otoriteye bağlayamadığını gösterir ve iki ana nedeni vardır: sunucuda kendinden imzalı (self-signed) bir sertifika durması ya da kurulumda ara sertifika paketinin (CA bundle) eklenmemesi.
Eksik zincir sinsi bir sorundur: masaüstü tarayıcılar eksik ara sertifikayı çoğu zaman kendi önbelleğinden ya da sertifikadaki adresten tamamlar ve site sorunsuz görünür; eski Android sürümleri, curl, ödeme altyapılarının geri bildirim istekleri ve mobil uygulamalar ise zinciri tamamlayamaz. Çözüm, ara sertifikaları sunucuya sertifikayla birlikte yüklemektir:
- cPanel ve Plesk: Kurulum ekranındaki Certificate Authority Bundle ya da CA sertifikası alanını doldurun.
- Nginx:
ssl_certificatesatırı, sunucu sertifikasıyla ara sertifikaları aynı dosyada içeren tam zinciri (fullchain) göstermelidir; kendi yönettiğiniz bir VPS sunucuda certbot bu dosyayıfullchain.pemadıyla üretir. - Apache 2.4.8 ve sonrası: Ara sertifikaları
SSLCertificateFileile gösterilen dosyada sunucu sertifikasının altına ekleyin.
Hata yalnızca bir şirketin ağında görülüyorsa HTTPS trafiğini inceleyen güvenlik cihazının kök sertifikası o bilgisayarlara yüklenmemiş olabilir; bu durumda sorun sitede değil, kurum ağındadır.
Protokol hataları ve yönlendirme döngüsü nasıl çözülür?
Protokol hataları sunucunun 443 portunda düzgün TLS konuşmadığını, yönlendirme döngüsü ise isteğin HTTP ile HTTPS arasında durmadan gidip geldiğini gösterir.
SSL_ERROR_RX_RECORD_TOO_LONG ve ERR_SSL_PROTOCOL_ERROR
Firefox’taki SSL_ERROR_RX_RECORD_TOO_LONG neredeyse her zaman 443 portunun şifresiz HTTP yanıt verdiği anlamına gelir; Chrome aynı durumda ERR_SSL_PROTOCOL_ERROR gösterir. curl -I http://ornek.com:443 komutu HTTP başlıkları döndürüyorsa durum budur: Nginx’te listen 443; satırını listen 443 ssl; yapın, Apache’de 443 sanal sitesinde SSLEngine on satırının bulunduğundan emin olun. Sunucu yalnızca eski TLS 1.0/1.1 sürümlerini sunuyorsa Chrome bunun yerine ERR_SSL_VERSION_OR_CIPHER_MISMATCH gösterir; güncel tarayıcılar bu sürümleri 2020’de bıraktı. Desteklenen sürümleri -tls1_2 ve -tls1_3 parametreli openssl s_client denemeleriyle görebilirsiniz.
ERR_TOO_MANY_REDIRECTS
Döngünün klasik nedeni, içerik dağıtım ağının (CDN) ziyaretçiyle HTTPS, sunucuyla HTTP konuşmasıdır: Cloudflare gibi bir hizmette SSL modu Flexible iken sunucudaki HTTPS zorlama kuralı her isteği yeniden HTTPS’e gönderir. Sunucuya geçerli bir sertifika kurup modu Full (strict) yapın. Panelin HTTPS zorlama anahtarı, .htaccess kuralı ve bir eklenti aynı anda yönlendirme yapıyorsa yalnızca birini bırakın; zinciri curl -sIL http://ornek.com ile izleyin. Doğru kural örnekleri HTTP HTTPS yönlendirme rehberindedir.
Sık Sorulan Sorular
SSL hatası yalnızca telefonda çıkıyorsa sebebi ne olabilir?
En sık neden eksik ara sertifikadır: masaüstü tarayıcılar eksik zinciri kendileri tamamlayabilirken bazı mobil cihazlar ve uygulamalar tamamlayamaz. İkinci olasılık telefonun tarih ve saatinin yanlış olmasıdır. Sunucuda sertifikayı CA bundle ile birlikte yeniden kurun; openssl s_client çıktısında en az bir ara sertifika ve 0 (ok) doğrulama kodu görmelisiniz.
“Bağlantınız gizli değil” uyarısını geçip siteye girmek güvenli mi?
Kendi test sunucunuzda nedenini bildiğiniz bir uyarıyı geçmek kabul edilebilir; başkasına ait bir sitede ise önerilmez. Uyarı, tarayıcının karşıdaki sunucunun kimliğini doğrulayamadığı anlamına gelir; bu durumda girdiğiniz parola ya da kart bilgisi araya giren biri tarafından okunabilir. Kendi sitenizde ziyaretçilere uyarıyı geçmelerini söylemek yerine hatayı kaynağında düzeltin.
Siteyi yeni hostinge taşıdıktan sonra SSL hatası alıyorum, ne yapmalıyım?
Önce alan adının yeni sunucunun IP adresine çözümlendiğini dig ya da nslookup ile doğrulayın; DNS yayılırken ziyaretçilerin bir kısmı eski sunucuya gidebilir. Ücretsiz sertifikalar alan adı yeni sunucuyu gösterdikten sonra üretilebildiği için DNS oturunca panelde sertifika üretimini yeniden başlatın. Ücretli sertifika kullanıyorsanız sertifikayı, ara sertifikaları ve özel anahtarı yeni sunucuya taşımanız gerekir.
Kendinden imzalı (self-signed) sertifika canlı sitede kullanılabilir mi?
Hayır. Kendinden imzalı sertifika bağlantıyı şifreler ama hiçbir tarayıcı onu tanımadığı için her ziyaretçi tam sayfa uyarı görür. Yalnızca iç ağdaki test ortamlarında ya da yönetim arayüzlerinde geçici olarak kullanılabilir. Herkese açık siteler için ücretsiz bir DV sertifika bile aynı şifrelemeyi uyarısız sağlar.
HSTS açıkken SSL hatası olursa ne olur?
HSTS (HTTP Strict Transport Security) etkin bir sitede tarayıcı, sertifika hatası olduğunda uyarıyı geçme seçeneği sunmaz; ziyaretçi siteye hiç giremez. Tarayıcı bu kuralı max-age süresi boyunca hatırladığı için HSTS’i kapatmak da sorunu hemen çözmez. Bu yüzden HSTS’i açmadan önce sertifika yenilemesinin otomatik ve sorunsuz çalıştığından emin olun; hata çıktığında tek çözüm sertifikayı düzeltmektir.
Bu makale yardımcı oldu mu?
Geri bildiriminiz için teşekkürler!
kişi faydalı buldu