Exchange Server Sertifika İşlemleri
Daha önce Microsoft Auth Certificate‘in nasıl yenileneceğini başka bir makalemizde anlatmıştım ve Portal üzerinde Exchange Server için sertifika isteği nasıl yapılır ve nasıl yenilendiğini anlatan birden fazla makale bulunmakta.
Microsoft Exchange Server Auth Sertifikası Nasıl Yenilenir?
Exchange Server Federation Sertifikasının Yenilenmesi
Sertifika işlemi son CU ile değiştiği için artık EAC kullanarak yapılamamakta. Bu değişiklik öncesi sertifika yenileme ve sertifika oluşturma isteği aşağıda linkini bıraktığım makalede ki gibi yapılabilmekteydi.
Exchange 2019 Sertifika Yapılandırması – ÇözümPark (cozumpark.com)
Geçen sene tüm dünyada yaşanılan HAFNIUM saldırılarından sonra Microsoft On-Premises ortamda çalışan Exchange Server‘lar için bir çok güncelleme sağladı ve bir çok yeni özellik kazandırdı. Aslında bu özellikleri kazandırırken ECP ekranında veya EMS ekranında kullandığımız bir çok bileşeni kaldırdı.
Güncelleme için gerekli linkleri aşağıda bulabilirsiniz;
Exchange Server 2019 için Toplu Güncelleştirme 12 (KB5011156) (microsoft.com)
Exchange Server 2016 toplu güncelleştirmesi 23 (KB5011155) (microsoft.com)
UNC yollarının kötüye kullanılmasını önlemek için Microsoft, UNC yollarının girilmesini sağlayan alan parametlerini PowerShell ve EAC üzerinden kaldırdı. Bu değişiklik, Exchange Server 2019 CU12+ ve Exchange Server 2016 CU23+ sürümlerinde geçerli hale geldi.
EAC Üzerinde Yapılan Sertifika Değişiklikleri
EAC üzerinde bulunan aşağıdaki sertifika işlevselliği, Exchange Server 2019 CU12 ve sonraki sürümlerine ve Microsoft Exchange Server 2016 CU23 ve sonraki sürümlerine yükselttikten sonra arayüz içerisinde kaldırılıyor;
- Daha önce ECP üzerinden SSL Sertifikalarını Import veya Export butonu ile İçe/Dışa aktarma yapabiliyorduk. Son güncelleme ile bu özellik EAC üzerinden kaldırıldı.
- ECP üzerinden sertifika isteği yapmış olduğumuz alan kaldırıldı, son güncelleme ile bu işlemide ECP aracılığıyla yapamıyoruz.
- Sertifika Yenileme İşlemlerinin tamamı ECP’den kaldırıldı, bu işlemler için artık sadece PowerShell kullanabiliyoruz.
Exchange Server’ın önceki sürümlerinde, Exchange sertifikasını Exchange Yönetim Merkezi aracılığıyla alma veya verme seçeneği vardı.
EAC üzerinde daha önceki sürümlerde Import ve Export seçenekleri bulunmaktaydı. Bundan sonra Sertifika ile ilgili yapılması gereken tüm işlemler için PowerShell kullanılması gerekiyor.
(DAG yapınız bulunuyorsa, PowerShell ile yeni Sertifikalarınızı daha hızlı Import edebilirsiniz)
Exchange Server PowerShell Sertifika Değişiklikleri
UNC yolunu alan FileName ve RequestFile parametresi, Exchange Server 2019 CU12 ve sonraki sürümlerine ve Microsoft Exchange Server 2016 CU23 ve sonraki sürümlerine yükseltildikten sonra Exchange Server PowerShell komutları kaldırıldı.
MS Exchange Server’da Sertifika Oluşturma
Yeni bir Sertifika oluşturmanız gerekiyorsa, bu işlemleri artık PowerShell üzerinden yapmanız gerekmektedir. Öncelike sunucunuz üzerinde bir klasör paylaşımı yapmanız gerekiyor.
Sunucu üzerinde klasör oluşturup, oluşturulan klasörü paylaşıma açalım.
Oluşturmuş olduğumuz klasöre gerekli izinleri atayalım
Exchange Server sertifika isteği oluşturma
Exchange Yönetim Kabuğu’nu yönetici olarak çalıştırın..
$txtrequest = New-ExchangeCertificate –Server "CP-2019" –GenerateRequest –FriendlyName "CP 2022-2023" –PrivateKeyExportable $true –SubjectName "c=CP, s=Turkey, l=Istanbul, o=CozumPark, ou=IT, cn=mail.cozumpark.com" –DomainName mail.cozumpark.com,autodiscover.cozumpark.com
Sertifika isteğimi oluşturduk, .req dosyasını kullanabilmek için bu isteği export etmemiz gerekiyor, Export işlemi için kullanılması gereken komut seti aşağıda ki gibidir
[System.IO.File]::WriteAllBytes('\\CP-2019\Sertifika\ExchangeCert.req', [System.Text.Encoding]::Unicode.GetBytes($txtrequest))
Yapmış olduğumuz bu adımdan sonra Sertifika İsteğimizi EAC üzerinde Certificates alanında görebilmekteyiz.
Daha sonra oluşturmuş olduğunuz paylaşımlı klasörün içerisinde bulunan .req dosyasını CA sağlayıcısına göndererek sertifikanızın oluşturulmasını talep etmeniz gerekmektedir. CA sağlayıcısından gelen sertifikanızla, sunucu üzerinde oluşturmuş olduğunuz sertifika isteğini doğrulamak için kullanmanız gereken komut seti aşağıdaki gibidir;
Oluşturmuş olduğumuz, bekleyen sertifikamızı tamamlamak için kullanılması gereken komut seti Import-ExchangeCertificate’dir.
Import-ExchangeCertificate -FileData ([System.IO.File]::ReadAllBytes('\\CP-2019\Sertifika\CP.crt')) -PrivateKeyExportable:$true -Password (ConvertTo-SecureString -String 'CozumPark1' -AsPlainText -Force)
Sertifikamıza hizmet ataması yapmamız gerekiyor, bunun için oluşturduğumuz yeni sertifikanın thumbprint’ine ihtiyacımız bulunmakta.
EAC üzerinden oluşturduğumuz olduğumuz sertifikayı açarak thumbprint hanesini kopyalıyoruz ve kullanacağımız komut içerisine yapıştırmamız gerekiyor. Bu arada ilgili hizmet atamasını EAC üzerinden yapabiliriz.
Bu işlem için Enable-ExchangeCertificate komutunu kullanacağız.
Enable-ExchangeCertificate -Server "CP-2019" -Thumbprint Kopyaladığımız Thumbprint Kodu -Services SMTP,IIS -Force
Daha sonra IIS Reset yapmamız gerekiyor.
IISRESET
MS Exchange Server için PowerShell ile Sertifika isteği oluşturduk, CA sağlayıcısından gelen sertifikamızı Import ettik ve hizmet ataması yaptık. Peki, ortamımızda bulunan diğer Exchange Sunucuları içinde bu işlemi yapmamız gerekiyor mu?
Daha önce ECP/EAC aracılığıyla yapmış olduğumuz Export/Import işlemi ile tüm sunucularımıza sertifikayı yükleyebiliyordu, son yayınlanan CU sürümü ile artık bu işlemi PowerShell ile yapacağız.
MS Exchange Server Sertifika Export İşlemi
ECP üzerinde Export işlemi yapamadığımız için bu işemide PowerShell aracılığı ile gerçekleştirmek durumundayız.
Daha önce paylaşımda bir klasor oluşturmuştuk, tekrar bir klasörü paylaşıma açmamız gerekmiyor.
EMS’yi Run As Administrator olarak çalıştırmamız gerekiyor. Sonra sertifikamızı export etmek için aşağıdaki komut setini kullanmamız gerekiyor.
$cert = Export-ExchangeCertificate -Thumbprint 'Thumbprint Buraya Yazılacak' -BinaryEncoded -Password (ConvertTo-SecureString -String 'Parola Yazılması Gerekiyor' -AsPlainText -Force)
[System.IO.File]::WriteAllBytes('\\CP-2019\Sertifika\2022Sertifika.pfx', $cert.FileData)
Bu şekilde sertifikamızı Export edebildik, şimdi ise PowerShell aracılığıyla Import edeceğiz.
MS Exchange Server Sertifika Import İşlemi
EMS ile Export işlemini gerçekleştirdik, şimdi diğer sunucumuza Import ettikten sonra hizmet ataması yapacağız.
Import işlemi kullanmamız gereken komut seti aşağıdaki gibidir;
Import-ExchangeCertificate -Server "CP-2019-01" -FileData ([System.IO.File]::ReadAllBytes('\\CP-2019\Sertifika\2022Sertifika.pfx')) -PrivateKeyExportable:$true -Password (ConvertTo-SecureString -String 'PFX Parolası Buraya Girilecek' -AsPlainText -Force)
Import ettiğimiz sertifikamıza hizmet atamasını gerçekleştirmek için kullanılması gereken komut seti aşağıdaki gibidir;
Enable-ExchangeCertificate -Server "CP-2019-01" -Thumbprint Kopyaladığımız Thumbprint Kodu -Services SMTP,IIS -Force
Böylelikle Exchange Server sunucumuz için SSL Sertifikası isteği oluşturduk, CA aracılığıyla yeni bir sertifika talep ettik, gelen sertifikamızı sunucumu import ettik ve diğer sunucularımız için export/Import işlemi gerçekleştirdik.
Eline sağlık, çok güzel bir makale olmuş.
Teşekkür hocam.
Cengiz hocam selamlar,
Exchange sertifika ile ilgili yazdığınız makale çok yararlı olmuş, teşekkürler.
Size bi kaç şey sormak istiyorum.
ortamda DAG var ise “$txtrequest = New-ExchangeCertificate –Server “CP-2019″” olarak belirttiğiniz yere 2 sunucuyu da belirtmek mi gerekiyor,
O parametreye tek sunucu için ps scripti çalışırıp bir csr kodu ürettim, bu kodu servis sağlayıcıya ilettiğimde bana aşağıdaki cevabı dönüler,
-SubjectName “c=CP parametresi sanırım TR olacak, ben CP olarak bıraktım,
herhangibi -KeySize paranetresi girilmediği için default olarak 2048 bit olarak oluşmuştur diye düşünüyorum.
Siz ne dersiniz.
“””İletmiş olduğunuz CSR hatalı görünmektedir.
Tarafımıza 2048 Bitlik, Türkçe karakter içermeyen CSR oluşturup, iletmenizi rica ederiz.
İletiğiniz CSR üzerinde, Country kısmını, tr olarak ayarlamanızı rica ederiz.””
Hakan bey merhaba,
$txtrequest = New-ExchangeCertificate –Server “CP-2019″ bu kısma istek oluşturacağınız sunucuyu girmeniz yeterli olacak. İsteği yapmış olduğunuz sunucu üzerinden Export işlemi yapıyorsunuz.
-SubjectName bu bileşenden sonrasını tamamen kendinize göre düzenlemeniz gerekmektedir.
Örnek: “c=TR s=Beylikdüzü l=Istanbul o=CozumPark ou=IT CN=mail.cozumpark.com”
Keysize belirtmeniz gerekirse
$txtrequest = New-ExchangeCertificate –Server “İstek yapılacak olan sunucu adı” –GenerateRequest –FriendlyName “CP 2022-2023” –PrivateKeyExportable $true –SubjectName “c=TR s=Beylikdüzü l=Istanbul o=CozumPark ou=IT CN=mail.cozumpark.com” -KeySize 2048 –DomainName mail.cozumpark.com,autodiscover.cozumpark.com