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: DST Root CA X3 → ISRG Root X1 → Ara Sertifika → Site Cert (eski Android desteği için cross-sign; bu çapraz imzanın süresi 2024'te doldu ve artık kullanılmıyor)
- Kısa zincir: ISRG Root X1 → Ara Sertifika → Site Cert (bugün kullanılan zincir)
- Certbot varsayılan olarak doğru zinciri seçer; CA birden fazla zincir sunuyorsa
--preferred-chainile tercih belirtilebilir
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 kaynaklarından biridir. 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.