SSL Sertifika Zinciri (Certificate Chain) Nedir?
SSL güvenliği bir güven zinciri (chain of trust) üzerine kuruludur. Her SSL sertifikası, bir üst otoritenin imzasıyla güvenilir hale gelir:
Root CA Sertifikası → Ara (Intermediate) Sertifika(lar) → Site Sertifikası
Tarayıcılar yalnızca root CA sertifikalarını yerleşik olarak güvenir. Site sertifikasından root'a kadar olan zincirdeki her halka doğrulanabilir olmalıdır. Herhangi bir halka eksik veya bozuksa sertifika zinciri hatası oluşur.
Yaygın Sertifika Zinciri Hataları
1. Incomplete Chain (Eksik Zincir)
En yaygın zincir hatası. Sunucuda yalnızca site sertifikası yüklü, ara sertifika(lar) eksik.
Belirtiler
- Chrome'da çalışır ama Firefox'ta hata verir (Chrome AIA desteğiyle eksik sertifikayı indirebilir, Firefox indiremez)
- Masaüstünde çalışır ama mobilde hata verir
- SSL Labs testi "Chain issues: Incomplete" gösterir
Çözüm
# Ara sertifikayı indirin ve fullchain oluşturun
cat your_domain.crt intermediate.crt > fullchain.pem
# Nginx
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/private.key;
# Apache
SSLCertificateFile /etc/ssl/your_domain.crt
SSLCertificateChainFile /etc/ssl/intermediate.crt
2. Wrong Order (Yanlış Sıralama)
Sertifika dosyalarının birleştirme sırası yanlışsa bazı platformlarda sorun yaşanır.
Doğru Sıralama
- Site sertifikası (leaf / end-entity)
- Ara sertifika 1 (site sertifikasını imzalayan)
- Ara sertifika 2 (varsa — ara sertifika 1'i imzalayan)
- Root sertifika eklenmez (tarayıcıda yerleşik)
# Sırayı kontrol edin
openssl s_client -connect domain.com:443 -showcerts 2>/dev/null | grep "s:" | head -10
# Çıktıda sıralama:
# s:CN = yourdomain.com (site cert)
# s:CN = Sectigo RSA Domain Validation Secure Server CA (intermediate)
# ...doğru sırada olmalı
3. Expired Intermediate (Süresi Dolmuş Ara Sertifika)
Site sertifikanız geçerli olsa bile ara sertifikanın süresi dolmuş olabilir. Bu durumda zincir doğrulanamaz.
Çözüm
# Ara sertifika tarihini kontrol edin
openssl x509 -in intermediate.crt -noout -dates
# Süresi dolmuşsa, CA'nızdan güncel ara sertifika indirin
# Sectigo: https://support.sectigo.com/articles/Knowledge/Sectigo-Intermediate-Certificates
# DigiCert: https://www.digicert.com/kb/digicert-root-certificates.htm
4. Cross-Signed Chain Sorunları
Bazı CA'lar (özellikle Let's Encrypt) eski cihaz uyumluluğu için cross-signed zincir kullanır. Yeni root'a geçiş sırasında uyumsuzluklar olabilir.
Let's Encrypt Örneği
- Uzun zincir: ISRG Root X1 → R3/R10 → Site Cert (eski Android desteği için cross-sign)
- Kısa zincir: ISRG Root X1 → R3/R10 → Site Cert (modern cihazlar için yeterli)
- Certbot varsayılan olarak doğru zinciri seçer;
--preferred-chain "ISRG Root X1"ile kısa zincir kullanılabilir
Sertifika Zinciri Test Araçları
| Araç | Özellik | Erişim |
|---|---|---|
| SSL Labs | Kapsamlı zincir analizi, chain issues raporu | ssllabs.com/ssltest |
| DATASSL SSL Checker | Hızlı sertifika zinciri kontrolü | datassl.com/ssl-checker |
| whatsmychaincert.com | Eksik ara sertifikaları otomatik tespit ve bundle oluşturma | whatsmychaincert.com |
| OpenSSL CLI | Detaylı sertifika zinciri inceleme | Komut satırı |
Sertifika Zinciri Doğrulama Komutları
# Sunucudan dönen tüm sertifikaları göster
openssl s_client -connect domain.com:443 -showcerts
# Zincirdeki her sertifikanın bilgileri
openssl s_client -connect domain.com:443 -showcerts 2>/dev/null | \
awk '/BEGIN/{cert=""} {cert=cert$0"\n"} /END/{print cert | "openssl x509 -noout -subject -issuer -dates"}'
# Zinciri doğrula
openssl verify -CAfile ca-bundle.crt -untrusted intermediate.crt site.crt
Sonuç
Sertifika zinciri hataları, SSL sorunlarının en yaygın kaynağıdır. Doğru ara sertifikaları doğru sırayla yüklemek — bu kadar basit bir adım — sorunların büyük çoğunluğunu çözer. whatsmychaincert.com ile eksik sertifikaları otomatik tespit edebilir, SSL Labs ile yapılandırmanızı doğrulayabilirsiniz.