Bir siteye girdiğinizde tarayıcının kırmızı kilit göstermesi ya da "Bağlantınız gizli değil" uyarısı vermesi, çoğu zaman sertifikanın kendisiyle değil, onun nasıl kurulduğu ve sunulduğuyla ilgilidir. Hataların büyük kısmı zincir eksikliği, alan adı uyuşmazlığı veya süre dolması gibi tekrar eden birkaç başlıkta toplanır. Doğru komutlarla baktığınızda sorunun kaynağını dakikalar içinde görebilirsiniz.

Tarayıcı Uyarıları Aslında Ne Söyler

Her tarayıcı farklı bir metin gösterse de altta yatan hata kodu standarttır. Chrome ve Edge'de gördüğünüz NET::ERR_CERT_* kodları, Firefox'taki SEC_ERROR_* ya da SSL_ERROR_* ile aynı kök nedene işaret eder. Önce hangi kodla karşılaştığınızı not edin; çözüm yolu doğrudan bu koda bağlıdır.

  • ERR_CERT_DATE_INVALID: Sertifikanın süresi dolmuş ya da sunucu saati yanlış.
  • ERR_CERT_COMMON_NAME_INVALID: Sertifikadaki alan adı ile ziyaret edilen adres örtüşmüyor.
  • ERR_CERT_AUTHORITY_INVALID: Tarayıcı sertifikayı imzalayan kök otoriteye güvenmiyor ya da zincir eksik.
  • SSL_ERROR_BAD_CERT_DOMAIN: www ile www'suz sürüm arasındaki ad farkı en sık görülen kaynaktır.

Sertifika Zinciri Eksikliği

Uzaktan en sık karşılaşılan sorun budur. Sunucuya yalnızca yaprak (leaf) sertifikayı yükler, ancak ara (intermediate) sertifikayı eklemeyi atlarsanız bazı mobil tarayıcılar ve eski Android sürümleri zinciri tamamlayamaz. Masaüstü Chrome eksik ara sertifikayı bazen kendi önbelleğinden tamamladığı için sorun gözden kaçabilir.

Zinciri sunucu üzerinden doğrulamak için OpenSSL en güvenilir araçtır:

openssl s_client -connect alanadiniz.com:443 -servername alanadiniz.com -showcerts < /dev/null

# Çıktıdaki "Verify return code: 0 (ok)" satırını arayın.
# 21 (unable to verify the first certificate) görüyorsanız ara sertifika eksiktir.

Apache kullanıyorsanız sanal host dosyasında tam zinciri (fullchain) gösterdiğinizden emin olun:

SSLCertificateFile      /etc/ssl/certs/alanadiniz.crt
SSLCertificateKeyFile   /etc/ssl/private/alanadiniz.key
SSLCertificateChainFile /etc/ssl/certs/ca-bundle.crt

Nginx'te ise yaprak ve ara sertifikayı tek dosyada birleştirip ssl_certificate direktifine vermeniz gerekir; ayrı tutarsanız zincir kopar. Birleştirme sırasında dosya sırası önemlidir: önce kendi sertifikanız, ardından ara sertifika gelmelidir. Yanlış sırada birleştirilen bir dosya bazı istemcilerde sessizce hata üretir.

cat alanadiniz.crt ca-bundle.crt > fullchain.pem
nginx -t && systemctl reload nginx

Yapılandırmayı değiştirdikten sonra her zaman nginx -t ya da apachectl configtest ile sözdizimini doğrulayın; aksi halde yeniden başlatma sırasında servis tümüyle düşebilir.

Alan Adı Uyuşmazlığı

Sertifika alanadiniz.com için düzenlenmiş ama ziyaretçi www.alanadiniz.com adresine giriyorsa tarayıcı uyumsuzluk verir. Modern sertifikalarda her iki ad da SAN (Subject Alternative Name) alanına eklenmelidir. Mevcut sertifikanın hangi adları kapsadığını şöyle görebilirsiniz:

openssl x509 -in alanadiniz.crt -noout -text | grep -A1 "Subject Alternative Name"

Wildcard sertifika kullanıyorsanız *.alanadiniz.com yalnızca alt alan adlarını kapsar; kök alanadiniz.com ayrıca SAN'a eklenmelidir. Bu ayrımı atlamak çok sık yapılan bir hatadır. Ayrıca wildcard, tek bir seviyeyi kapsar: *.alanadiniz.com ifadesi blog.alanadiniz.com adresini karşılar ama panel.blog.alanadiniz.com gibi iki seviyeli alt alanlarda geçersiz kalır.

CSR (Certificate Signing Request) oluştururken Common Name alanına yazdığınız adın da SAN listesine düşmediği durumlar olabilir. Yeni sertifika talep ederken istediğiniz tüm adları açıkça belirtmek, sonradan yeniden düzenletme zahmetinden kurtarır.

Süre Dolması ve Otomatik Yenileme

Let's Encrypt sertifikaları genellikle 90 gün geçerlidir ve yenilemenin otomatikleştirilmesi şarttır. Certbot kuruluysa zamanlanmış görevin çalışıp çalışmadığını kontrol edin:

certbot renew --dry-run
systemctl list-timers | grep certbot

Yenileme başarısız oluyorsa çoğu durumda neden, doğrulama için kullanılan 80 numaralı portun kapalı olması ya da webroot dizininin yanlış tanımlanmasıdır. Süresi geçmiş bir sertifikanın kalan ömrünü hızlıca görmek için:

echo | openssl s_client -connect alanadiniz.com:443 2>/dev/null | openssl x509 -noout -dates

Sunucu saatinin kayması da yenilenmiş bir sertifikayı bile geçersiz gösterebilir. Sanal sunucularda saat kaymaları sık görülür; timedatectl çıktısında NTP senkronizasyonunun aktif olduğundan emin olun. Saat birkaç dakikadan fazla ileri ise henüz başlamamış bir geçerlilik penceresi yüzünden ERR_CERT_DATE_INVALID alırsınız.

Karışık İçerik (Mixed Content)

Sertifika sorunsuz kurulmuş olsa bile, sayfa içindeki bazı kaynaklar hâlâ http:// ile çağrılıyorsa kilit simgesi görünmez ya da uyarı çıkar. WordPress sitelerinde bu sorun temalardan ve eski içeriklere gömülü mutlak bağlantılardan kaynaklanır. Veritabanındaki eski adresleri güncellemek genellikle yeterli olur. Yönetilen ortamlarda bu süreç kolaylaşır; nitekim WordPress hosting paketlerinde sunulan otomatik HTTPS yönlendirme karışık içerik uyarılarının büyük bölümünü baştan engeller.

Sunucu tarafında tüm trafiği zorla HTTPS'e taşımak için Nginx'te şu blok işinizi görür:

server {
    listen 80;
    server_name alanadiniz.com www.alanadiniz.com;
    return 301 https://$host$request_uri;
}

Hata Kodları ve Hızlı Çözüm Tablosu

HataOlası NedenÇözüm
ERR_CERT_AUTHORITY_INVALIDAra sertifika eksikFullchain / ca-bundle ekle
ERR_CERT_COMMON_NAME_INVALIDSAN'da alan adı yokwww ve kök adı SAN'a ekle
ERR_CERT_DATE_INVALIDSüre dolmuş / sunucu saatiYenile, NTP ile saati eşle
ERR_SSL_PROTOCOL_ERROREski TLS sürümü / yanlış portTLS 1.2+ aç, 443'ü dinle
NET::ERR_CERT_REVOKEDSertifika iptal edilmişYeniden düzenlet

TLS Sürümü ve Protokol Hataları

ERR_SSL_PROTOCOL_ERROR ya da SSL_ERROR_NO_CYPHER_OVERLAP gibi hatalar genellikle sunucunun yalnızca artık desteklenmeyen TLS 1.0/1.1 sunmasından kaynaklanır. Güncel bir yapılandırmada en az TLS 1.2, tercihen TLS 1.3 etkin olmalıdır:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers off;

Sunucunun dışarıdan nasıl göründüğünü doğrulamak için belirli bir protokolü hedefleyerek test edebilirsiniz:

openssl s_client -connect alanadiniz.com:443 -tls1_2
openssl s_client -connect alanadiniz.com:443 -tls1_3

Bogahost Önerisi: Değişiklik yapmadan önce mevcut sertifika ve anahtar dosyalarınızın yedeğini alın, ardından yenilemeyi düşük trafikli saatlerde uygulayın; böylece zincir hatası çıksa bile eski yapılandırmaya saniyeler içinde dönebilirsiniz.

Doğru Sertifika Seçiminin Önemi

Tek alan adı için ücretsiz bir DV sertifika çoğu blog ve kurumsal tanıtım sitesi için yeterlidir. Ancak e-ticaret, çok sayıda alt alan adı veya kurumsal güven gerektiren projelerde wildcard ya da OV/EV seviyesinde bir çözüm daha uygundur. İhtiyacınıza göre farklı doğrulama seviyelerindeki SSL sertifikası seçeneklerini karşılaştırmak, ileride yaşanabilecek kapsam ve zincir sorunlarının önüne geçer.

Özetle

SSL hatalarının neredeyse tamamı zincir, alan adı, geçerlilik süresi ve protokol başlıklarına iner. OpenSSL ile sunucuyu dışarıdan test etmeyi alışkanlık hâline getirdiğinizde, tarayıcının kapalı kapı ardında ne gördüğünü siz de görür ve sorunu tahminle değil veriyle çözersiniz. Bir kez doğru kurulan ve yenilemesi otomatikleştirilen bir sertifika, aylarca hiçbir müdahale gerektirmeden sessizce çalışır; asıl iş, ilk kurulumu temiz yapmaktır.

Reklam Alanı

İçerik Altı (728x90)

Yorumlar (0)

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Yorum Yap

Maksimum 2000 karakter