I know one thing That I know nothing

Microsoft AD CA üzerinden Otomatik Sertifika Yenileme ve IIS Otomatik Sertifika Rebind

IIS üzerinde site ilk defa kurulurken CA üzerinden sertifika almak ve bunun bind edilmesi rutin bir işlem.

Ancak sorun, bu sertifikaların expire olma zamanlarında yaşanıyor. Özellikle büyük yapılarda bunun yaşanmaması için port dinleyerek bind edilen sertifikaları raporlayan ücretli uygulamalar mevcut. Çünkü yapı büyüdükçe sertifikaların expire olma süreçlerinin manuel takibi zorlaşıyor. Evet, en basit yöntem ile excel üzerinde tutularak her gün manuel kontrol edilebilir. Ancak IIS parkınız 100 veya binlercesi ile ifade ediliyor ise ve bu site lar kritik ise böyle bir risk almanız pek mümkün olmuyor.

Örneğin hafta sonu expire olacak bir sertifikayı gözden kaçırmanız SSL hataları nedeni ile ciddi sorunlar yaşatabilir. Ki bu SSL sorunu yüzünden erişilemeyen servis ya da site, işletmenize para kazandırıyor ise işte o zaman durum daha da vahimleşebilir.

Bu neden ile CA ve IIS üzerinde bu işlemi bizim yerimize otomatik olarak yapacak bir yapıyı ele alacağız.

IIS Rebind işlemi için IIS versiyonun minimum 8.5 olması gerekiyor ki bu da Server 2012 R2 ve sonrası sistemlere denk geliyor. Bundan önceki versiyonlar maalesef Rebind yapısını desteklemiyor.

CA konsolunu açarak Template alanından Manage kısmına geçiyoruz.

Not: Domain Admin hakkına sahip bir user ile işlemleri yapmamız gerekiyor.

Manage ekranında Default olarak gelen Web Server Template üzerinden Duplicate Template oluşturuyoruz.

General alanında sertifikamıza bir isim veriyoruz ve testi hızlı bir şekilde yapabilmek için “Validity Period” kısmını 1 hours, “Renewal Period” kısmını ise 0 hours olarak ayarlıyoruz.

Template özelliklerinde uyumluluğu 2012R2 olarak seçiyoruz.

Oluşturacağımız sertifikayı Private Key ile dışarı alabilmek için “Request Handling” kısmından “Allow private key to be exported” seçiyoruz.

AutoEnrollment özelliğini belirteceğimiz alan olan Subject Name kısmına gelerek aşağıdaki şekilde ayarları yapıyoruz.

Ardından Security alanına geçerek Enrollment yetkilerini düzenliyoruz. Bu kısımda iki seçeneğimiz mevcut;

  1. Bu işlemi yapmaya yetkili olacak computer objelerini manuel her seferinde bu alana eklemek.
  2. Ad üzerinde bir security grubu oluşturmak ve bu security grubunu buraya eklemek ardından yetkili olacak computer objelerini ise bu gruba üye yapmak.

Ben AD üzerinde “AutoEnrollment” isimli bir security grup oluşturdum ve bu yöntem üzerinden ilerliyorum.

Bu işlemi yapmam gereken her sistem oluşturduğumda bunu unutabilirim ya da bunu yapmak istemem derseniz. Aşağıdaki gibi basit bir PS task haline getirerek otomatikleştirebilirsiniz.

Aşağıdaki örnekte IIS OU içerisindeki tüm computer objelerini oluşturduğum ilgili gruba ekliyorum.

Get-ADComputer -SearchBase “OU=IIS,DC=cozumpark,DC=com” -Filter * |

ForEach-Object {Add-ADGroupMember -Identity “AutoEnrollment” -Members $_ }

Add ile oluşturduğumuz grubu ekliyoruz.

Eklediğimiz gruba “Enroll” ve “Autoenroll” yetkilerini veriyoruz.

Daha sonra OK ile sertifika template oluşturuyoruz. Oluşturduğumuz bu template biz ISSUE edene kadar Template üzerinde görünmez ve sertifika talebinde bulunan sistem bu template göremez. Template yayınlamasın için aşağıdaki adımları izleyerek ISSUE ediyoruz.

 Template oluşturduktan sonra Computer objesini AD üzerinde oluşturduğumuz gruba üye yapmamız gerekiyor. Eğer bu adımı atlarsak aşağıda olduğu gibi sadece default olarak ISSUE edilmiş Template görülür.

Ad üzerine giderek oluşturduğumuz grubun Members kısmına geliyoruz ve add ile ilerliyoruz.

Selected kısmı default olarak computer objelerini göstermediğinden Object Types kısmına girerek Computers seçiyoruz. Ardından eklemek istediğimiz sistemin ismini yazarak ekliyoruz.

AutoEnrollment uygulanacak sistemlerde aşağıdaki key’ in oluşturulmuş olması gerekiyor.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Cryptography\AutoEnrollment]

“AEPolicy”=dword:00000007

Bu key GPO ya da yapınızda kullandığınız bir dağıtım aracı ile sistemlere import edebilirsiniz.

CA tarafında yapacağımız işlemler tamamlandı. Şimdi 2012 R2 sistemimiz üzerindeki IIS giderek diğer işlemleri oradan gerçekleştiriyoruz.

Öncelikle IIS sunucuma bir sertifika oluşturmak için MMC üzerinden ilerliyorum. Bu işlem IIS üzerinden de gerçekleştirilebilir ancak Chrome gibi browserlar güvenlik için sertifika içerisinde SAN belirtilmiş olmasını istiyor. Aldığınız sertifika geçerli dahi olsa SAN bilgisi bulunmuyor ise güvensiz olarak göstermekte.

Yukarıdaki adımlar ile Sertifika Store’ a ulaşıyoruz.

Sertifika talebinde bulunuyoruz.

Template içerisinde yapılması gerekli işlemler olduğu için aşağıdaki uyarı alıyoruz. Uyarıya tıklayarak ilerliyoruz.

General alanından IIS üzerinde seçim yaparken göreceğimiz Friendly Name girişini yapıyoruz.

Son olarak Sertifikamızın Private Key ile export edilebilmesi için (pfx) aşağıdaki ayarı yapıyoruz.

OK dediğimiz de gerekli alanlarının girişini yaptığımız için uyarı almıyoruz ve Template seçimimizi yaparak Enroll ediyoruz.

Aldığımız Sertifikayı IIS üzerindeki Default Site üzerindeyken Binding kısmına giriyoruz.

Oluşturduğumuz sertifikayı site üzerine bind ediyoruz.

IIS üzerindeki Sertifikamızın Otomatik Rebind olması için “Actions” alanındaki “Enable Automatic Rebind of Renewed” seçeneğine tıklıyoruz.

Tabiki yazımızın başında da belirttiğim gibi bu işlemi tüm sunucuların IIS lerine bağlanarak gerçekleştirmek ciddi bir zaman kaybı. O neden ile onu da otomatikleştireceğiz.

Biz IIS üzerinde “Enable Automatic Rebind of Renewed” tıkladığımız zaman aslında sistem arka tarafta

Microsoft\Windows\CertificateServicesClient\IIS-AutoCertRebind sekmesinde bir Schedule Task oluşturuyor.

Bir kere bu işlemi manuel olarak yaparak Task’ ın oluşmasını sağlıyoruz ve export alıyoruz.

 Ben export “e:\” dizinime “IIS-AutoCertRebind_Task.xml” olarak alıyorum. Ardından aldığımız bu export yine yapımızda kullandığımız herhangi bir yaygınlaştırma uygulaması ile aşağıdaki cmd komutu ile yaygınlaştırabiliyoruz

schtasks.exe /create /xml IIS-AutoCertRebind_Task.xml -tn “\Microsoft\Windows\CertificateServicesClient\IIS-AutoCertRebind”

Site içerisine bind ettiğimiz sertifikanın doğru olup olmadığını kontrol etmek ve sertifikanın detaylarını görmek için sayfayı IE üzerinden çağırıyoruz.

Sayfa Https olarak sorunsuz bir şekilde açıldı. Valid From ve Valid to alanlarındaki bilgiler sertifikamızın geçerli olacağı zaman dilimi. Test için Template üzerinde 1 saat ayarladığımız için geçerlilik tarihi 1 saat görünüyor. Şimdi beklediğimiz aksiyon. Sistemin Expire zamanı ile sertifikayı yenileyerek otomatik olan bind etmesi.

Beklediğimiz şekilde sertifikamız yenilenmiş ve otomatik olarak bind edilmiş.

Burada en önemli nokta işaretlediğim 2. Alan olan Thumbprint alanının değişmiş olması. Eğer standart ayarlar ile IIS üzerinde bir binding yapıyorsanız sorun yok ancak web.config gibi bir yapı içerisinden Thumbprint ile doğrulama yapılıyor ise buna dikkat etmeniz gerekiyor.

Yapılan işlemin detayına aşağıdaki şekilde EventViewer üzerinden aşağıdaki şekilde kontrol edebiliriz.

EventViewer à Applications and Services Log à Microsoft à Windows à CertificateServicesClient-Lifecycle-System à Operational

Makalemizin sonuna geldik. Yararlı olması dileğimle.