# SSL sertifikasını openssl ile kontrol etme: bitiş tarihi, zincir ve SAN

https://kervanhosting.com/bilgi-bankasi/makale/ssl-sertifikasini-openssl-ile-kontrol-etme-zincir-ve-san-dogrulama

Bir sertifika sorununu çözerken tarayıcının uyarı mesajı yetmez; sertifikayı doğrudan sorgulamak neyin yanlış olduğunu söyler. `openssl` komutu Linux, Mac ve Windows'ta (Git Bash ya da WSL) bulunur ve ek araç gerektirmez. Aşağıdaki komutlar bir web sitesini ve mail sunucusunu kontrol etmeyi gösterir.

## Bitiş tarihi ve veren

```
echo | openssl s_client -connect ornek.com:443 -servername ornek.com 2>/dev/null | openssl x509 -noout -subject -issuer -dates
```

Örnek çıktı:

```
subject=CN = ornek.com
issuer=C = US, O = Let's Encrypt, CN = YE1
notBefore=Oct  3 12:00:42 2026 GMT
notAfter=Jan  1 12:00:41 2027 GMT
```

`notAfter` bitiş tarihidir; Let's Encrypt sertifikaları 90 gün geçerlidir ve normalde bitmeden 30 gün önce yenilenir. `-servername` parametresi önemlidir: bir sunucuda birden fazla site varsa hangi sitenin sertifikasını istediğinizi bildirir. Bunu unutursanız yanlış (varsayılan) siteninkini görürsünüz.

## Kapsadığı adlar (SAN)

```
echo | openssl s_client -connect ornek.com:443 -servername ornek.com 2>/dev/null | openssl x509 -noout -ext subjectAltName
```

Çıktıda `DNS:ornek.com, DNS:www.ornek.com` gibi bir liste görürsünüz. Açtığınız adres listede yoksa uyarı alırsınız: [sertifika adı uyuşmuyor](https://kervanhosting.com/bilgi-bankasi/makale/err-cert-common-name-invalid-sertifika-adi-uyusmuyor).

## Zincir tam mı?

Bir sertifika, güvenilir bir kök sertifikaya bir "ara sertifika" üzerinden bağlanır. Sunucu ara sertifikayı da göndermezse bazı istemciler (özellikle eski cihazlar, mobil uygulamalar, `curl`) "unable to get local issuer certificate" hatası verir, ama masaüstü tarayıcılar çoğu zaman ara sertifikayı kendileri bulduğu için sorun fark edilmez. Zinciri görmek için:

```
echo | openssl s_client -connect ornek.com:443 -servername ornek.com -showcerts 2>/dev/null | grep -E "^ [0-9] s:|^   i:|Verify return"
```

Sertifika sayısını (`0 s:`, `1 s:`) ve `Verify return code: 0 (ok)` satırını arayın. `0 (ok)` değilse zincirde eksik var demektir. Çözüm: Nginx ayarında `ssl_certificate` satırına yalnızca site sertifikasını değil, **`fullchain.pem`** dosyasını verin (site ve ara sertifikayı birlikte içerir); `cert.pem` kullanmayın:

```
ssl_certificate     /etc/letsencrypt/live/ornek.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/ornek.com/privkey.pem;
```

## Mail sunucusunun sertifikası

Mail programı sertifika uyarısı veriyorsa aynı yöntemle mail sunucusuna bakabilirsiniz. IMAP (993, doğrudan TLS) için:

```
echo | openssl s_client -connect mail.kervanhost.com:993 2>/dev/null | openssl x509 -noout -subject -dates
```

SMTP gönderim portu 587 STARTTLS kullanır: `echo | openssl s_client -starttls smtp -connect mail.kervanhost.com:587 2>/dev/null | openssl x509 -noout -subject -dates`. Mail programında bağlandığınız adın (`mail.kervanhost.com`) sertifikadaki adla aynı olduğundan emin olun: [IMAP ve SMTP ayarları](https://kervanhosting.com/bilgi-bankasi/makale/imap-pop3-ve-smtp-ayarlari-e-posta-hosting).

## Yenilendi mi, yoksa eski mi sunuluyor?

Certbot sertifikayı yeniledi ama site eski bitiş tarihini gösteriyorsa: `sudo certbot certificates` ile diskteki sertifikanın bitişini, yukarıdaki `openssl s_client` ile sunucunun gerçekte sunduğunu karşılaştırın. Farklıysa Nginx'i yeniden yükleyin: `sudo systemctl reload nginx`. Önünde Cloudflare varsa komut Cloudflare'in sertifikasını gösterir; sunucunun kendisini görmek için doğrudan IP'ye bağlanın (`-connect 203.0.113.10:443 -servername ornek.com`).

## Çevrimiçi araçlar

Daha ayrıntılı bir rapor için SSL Labs gibi ücretsiz çevrimiçi test servisleri vardır; protokol sürümlerini, zincir eksikliklerini ve güvenlik yapılandırmasını not ile gösterirler. Bu komutlar ise hızlı ve sunucudan bağımsız kontrol içindir. İlgili: [sertifika süresi](https://kervanhosting.com/bilgi-bankasi/makale/err-cert-date-invalid-sertifika-suresi-doldu-ya-da-saat-yanlis), [Certbot hataları](https://kervanhosting.com/bilgi-bankasi/makale/certbot-challenge-failed-hatasi-ve-yenileme-sorunlari).

## Sık sorulanlar

### Windows'ta openssl yok.

Git for Windows ile gelen Git Bash'te ya da WSL içinde bulunur. PowerShell'de alternatif olarak `Test-NetConnection` bağlantıyı sınar ama sertifikayı göstermez.

### `unable to get local issuer certificate` ne demek?

İstemcinin sertifika zincirini güvenilir bir köke bağlayamadığını söyler. Çoğu zaman sunucu ara sertifikayı göndermiyordur; `fullchain.pem` kullanın.

### Sertifikanın kalan gününü betikle izleyebilir miyim?

Evet; `openssl x509 -checkend 2592000 -noout` 30 gün içinde bitip bitmediğini söyler (çıkış kodu 1 ise bitiyordur). Bunu bir cron görevine bağlayıp haber alabilirsiniz.

**İlgili makaleler**

- [NET::ERR_CERT_COMMON_NAME_INVALID: sertifika adı sitenizle uyuşmuyor](https://kervanhosting.com/bilgi-bankasi/makale/err-cert-common-name-invalid-sertifika-adi-uyusmuyor)
- [Certbot "Challenge failed" hatası ve sertifika yenileme sorunları](https://kervanhosting.com/bilgi-bankasi/makale/certbot-challenge-failed-hatasi-ve-yenileme-sorunlari)
- [SSL sertifikası nedir? Neden https gerekli?](https://kervanhosting.com/bilgi-bankasi/makale/ssl-sertifikasi-nedir-neden-gerekli)

*Sorununuz çözülmediyse [destek talebi açın](https://kervanhosting.com/destek-taleplerim). Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.*
