İçeriğe geç
Yeni yazı çıkınca e-posta · 4.812 abone 115 rehber · 78 ipucu · 8 komut RSS GitHub LinkedIn İletişim
Ara Bültene katıl
Bültene katıl 4.812 abone · yeni yazı çıkınca e-posta
Windows Server

Süresi dolan sertifikayı kesintiden önce yakalamak

Sertifika kesintileri her zaman aynı sebeple olur: kimse tarihi takip etmiyordur. Envanter ve uyarı kurmanın pratik yolu.

Mustafa Çelik 27 Mart 2026 · 9 dk okuma

Sertifika kaynaklı kesintilerin ortak özelliği şudur: tamamen öngörülebilirdirler. Bitiş tarihi ilk günden bellidir. Yine de her yıl birileri pazartesi sabahı “site açılmıyor” çağrısıyla uyanır.

Sorun teknik değil, envanter sorunudur.

Önce nerede sertifika olduğunu bilin

Çoğu kurum yalnızca web sunucusundaki sertifikaları takip eder. Oysa liste çok daha uzundur:

Web sunucuları ve yük dengeleyiciler. LDAPS için domain controller’lar. RDP ağ geçitleri. VPN uç noktaları. İç uygulamaların istemci sertifikaları. Kod imzalama. WinRM HTTPS dinleyicileri. Ve en çok unutulanı: kendi kök/ara sertifika otoritenizin sertifikası.

Sonuncusu on yıllık ömre sahip olduğu için unutulur ve süresi dolduğunda tüm iç PKI çöker.

Makinedeki sertifikaları listeleyin

Get-ChildItem Cert:\LocalMachine\My |
  Select-Object Subject, NotAfter,
    @{ n='KalanGun'; e={ (New-TimeSpan -End $_.NotAfter).Days } },
    Thumbprint |
  Sort-Object KalanGun

Birden çok sunucuda:

$sunucular = 'web01','web02','dc01','dc02','vpn01'
Invoke-Command -ComputerName $sunucular {
    Get-ChildItem Cert:\LocalMachine\My |
      Where-Object { $_.NotAfter -lt (Get-Date).AddDays(60) } |
      Select-Object Subject, NotAfter, Thumbprint
} | Sort-Object NotAfter

Bu sorguyu haftalık bir zamanlanmış görevle çalıştırıp sonucu e-postayla göndermek, sertifika kesintilerinin büyük kısmını ortadan kaldırır.

Dışarıdan da bakın

Sunucudaki depoda sertifikanın olması, hizmetin onu kullandığı anlamına gelmez. Bağlama (binding) yanlışsa eski sertifika sunuluyor olabilir.

Dışarıdan gerçekte ne sunulduğunu kontrol edin:

$b = [Net.Sockets.TcpClient]::new('www.sirket.com', 443)
$s = [Net.Security.SslStream]::new($b.GetStream())
$s.AuthenticateAsClient('www.sirket.com')
$sert = [Security.Cryptography.X509Certificates.X509Certificate2]$s.RemoteCertificate
[pscustomobject]@{
    Konu    = $sert.Subject
    Bitis   = $sert.NotAfter
    Kalan   = (New-TimeSpan -End $sert.NotAfter).Days
}
$s.Dispose(); $b.Close()

Bu kontrol, “yeniledim ama site hâlâ eski sertifikayı gösteriyor” durumunu yakalar — ki yenilemenin en sık atlanan adımı budur.

Zincirin tamamını kontrol edin

Bitiş tarihi yalnızca yaprak sertifikada değildir. Ara sertifikanın süresi dolarsa ya da sunucu ara sertifikayı sunmuyorsa, bazı istemciler siteyi güvenilmez görür — ve bu, tarayıcıya göre değişen “bazı kullanıcılarda çalışıyor” tipi bir arızadır.

Sunucunun zinciri tam gönderdiğinden emin olun; eksik ara sertifika, en sık görülen yapılandırma hatasıdır.

Otomatik yenileme kurun

İç PKI kullanıyorsanız otomatik kayıt (autoenrollment) sertifika yönetiminin çoğunu ortadan kaldırır: şablonda yenileme eşiğini tanımlarsınız, makineler kendiliğinden yeniler.

Dış sertifikalarda ACME tabanlı otomatik yenileme mümkünse tercih edin. Manuel yenilenen her sertifika, bir gün unutulacak sertifikadır.

Otomatik yenilemede de bir tuzak var: sertifika yenilenir ama hizmet yeni sertifikayı almaz. Yenileme sonrası ilgili hizmetin yeniden başlatılması ya da bağlamanın güncellenmesi gerekebilir. Bunu yenileme betiğinin parçası yapın.

Özel anahtarı yedekleyin

Sertifikayı yedeklemek yetmez; özel anahtar olmadan işe yaramaz. Dışa aktarırken anahtarı da alın ve güvenli saklayın:

$parola = Read-Host -AsSecureString
Export-PfxCertificate -Cert Cert:\LocalMachine\My\<parmakizi> `
  -FilePath D:\yedek\web01.pfx -Password $parola

Kök CA’nızın özel anahtarı çevrimdışı ve fiziksel olarak korunmalıdır. Kök CA’sı sürekli açık bir sanal makinede duran PKI, PKI değildir.

İptal kontrolü de çalışmalı

Sertifikanın geçerli olması yetmez; istemcinin iptal durumunu kontrol edebilmesi de gerekir. İç PKI’da CRL dağıtım noktası (CDP) ya da OCSP yanıtlayıcısı erişilemezse istemciler ya bekler ya da bağlantıyı reddeder.

Bu, klasik bir “her şey doğru görünüyor ama çalışmıyor” senaryosudur — özellikle CDP adresi iç ağdan erişilebilirken dışarıdan erişilemediğinde.

certutil -verify -urlfetch C:\gecici\sertifika.cer

Bu komut zinciri doğrular ve CDP/OCSP adreslerine gerçekten ulaşılıp ulaşılmadığını gösterir. Yeni bir PKI kurduğunuzda ilk çalıştıracağınız komut budur.

Kısalan geçerlilik süreleri

Genel sertifika otoritelerinin verdiği sertifikaların ömrü yıllar içinde belirgin şekilde kısaldı ve kısalmaya devam ediyor. Bu, elle yenilemeyi giderek daha sürdürülemez hâle getiriyor.

Pratik sonuç şudur: otomasyon artık bir kolaylık değil, zorunluluk. Yılda bir kez yapılan manuel yenileme süreçlerini, ömür kısaldıkça yılda dört kez yapmak zorunda kalırsınız — ve dördüncüsü mutlaka unutulur.

Doğrulama adımı

Envanteri kurduktan sonra tek soruyla test edin: “Önümüzdeki 60 gün içinde hangi sertifikaların süresi doluyor?”

Cevabı bir dakikada, tek bir listeden verebiliyorsanız süreç çalışıyordur. Sunucu sunucu dolaşmanız gerekiyorsa envanter yok demektir — ve bir sonraki kesinti zaten takvimde, siz sadece tarihini bilmiyorsunuz.

Etiketler sertifikaizlemepki
Mustafa Çelik

Kıdemli Sistem Yöneticisi, Ankara. 12 yıldır Windows Server, Active Directory ve ağ altyapısıyla uğraşıyor; öğrendiklerini bu blogda üretim ortamında denenmiş rehberlere çeviriyor.

Hakkımda

Bu rehber işinize yaradıysa, sonrakini kaçırmayın.

Yeni yazı yayınlandığında tek e-posta. Takvim yok, dilediğiniz an çıkabilirsiniz.

Bülten sağlayıcısı henüz bağlanmadı. Bağlanana kadar e-posta ile yazabilirsiniz ya da RSS akışını takip edebilirsiniz.