Exchange Server

“Server Error in ‘/owa’ Application” Hatasının Çözümü

ECP/OWA erişmek istediğiniz zaman “Exchange Server OWA / ECP; ASSERT: HMACProvider.GetCertificates:protectionCertificates.Length” uyarısının sebebi sunucu üzerindeki SSL yapılandırılmasından kaynaklanmaktadır.

Çoğunluk olarak bu hatayla Microsoft Exchange Server Temmuz 2021 Update ile karşılaştık. Temmuz 2021 yamasında schema genişletmesi olduğunuda unutmayalım.

ECP/OWA erişimi sırasında aldığımız hata aslında bize Microsoft Exchange Server Auth Certificate (OAuth) sertifikasının süresinin bittiğinden yada hiç yapılandırılmadığından kaynaklanmaktadır.

Microsoft Exchange Server Auth Certificate Nedir?

Microsoft Exchange Server Auth Ceritificate, aslında ortamınıza yüklediğiniz Exchange Server ile default olarak gelir ve bitiş süresi kurulduğundan itibaren 5 yıldır. Çoğu zaman, bu sertifikaya bakılmayabiliyor, çünkü 5 yıl içinde yeni bir Exchange Server’a Migration yapabilirsiniz ve eski Exchange Server’ı ortamınızdan kaldırabilirsiniz.

Exchange Server, iç sunucularla (ADFS) ve çeşitli Exchange hizmetleriyle iletişim kurmak için Transport Layer Security’i izlemektedir. Ancak aynı zamanda harici istemcilerle düzenli olarak iletişim kurmaktadır ve bu nedenle farklı türde sertifikalar kullanılabiliyor. On-Premises Exchange Server’da, çeşitli hizmetler ve dış istemcilerle bağlantıları doğrulamak için kullanılan üç otomatik olarak imzalanan dijital sertifikalar vardır. Bu sertifikalardan biri ‘Microsoft Exchange Server Kimlik Doğrulama Sertifikası’dır.

Microsoft Exchange Server Auth Ceritificate, sunucudan sunucuya kimlik doğrulaması ve SharePoint Server vb.gibi servislerle iletişim kurmak içinde kullanılmaktadır.

Server Error in ‘/OWA’ Application Hatasının Çözümü

AOuth Sertifikasının kısa bir tanımını yaptıktan sonra, yaşamış olduğumuzun sorunun çözümüne gelelim. ECP/OWA erişmek istediğiniz zaman aşağıdaki gibi bir hata alabilirsiniz.

Bu hata Event LOG üzerinde 1003 ID olarak gözükmektedir.

[ExAssertException: ASSERT: HMACProvider.GetCertificates:protectionCertificates.Length<1] Microsoft.Exchange.Diagnostics.ExAssert.AssertInternal(String formatString, Object[] parameters) +241 Microsoft.Exchange.Diagnostics.ExAssert.RetailAssert(Boolean condition, String formatString, T1 parameter1, T2 parameter2) +2687950 Microsoft.Exchange.Clients.Common.HmacProvider.GetCertificates() +363 Microsoft.Exchange.Clients.Common.HmacProvider.GetHmacProvider() +140 Microsoft.Exchange.Clients.Common.HmacProvider.ComputeHmac(Byte[][] messageArrays) +14 Microsoft.Exchange.HttpProxy.FbaModule.SetCadataCookies(HttpApplication httpApplication) +1032 Microsoft.Exchange.HttpProxy.FbaFormPostProxyRequestHandler.HandleFbaFormPost(BackEndServer backEndServer) +3579 Microsoft.Exchange.HttpProxy.FbaFormPostProxyRequestHandler.ShouldContinueProxy() +20 Microsoft.Exchange.HttpProxy.ProxyRequestHandler.BeginProxyRequestOrRecalculate() +257 Microsoft.Exchange.HttpProxy.ProxyRequestHandler.InternalOnCalculateTargetBackEndCompleted(TargetCalculationCallbackBeacon beacon) +1528 Microsoft.Exchange.HttpProxy.<>c__DisplayClass280_0.b__0() +303
Microsoft.Exchange.Common.IL.ILUtil.DoTryFilterCatch(Action tryDelegate, Func2 filterDelegate, Action1 catchDelegate) +35
Microsoft.Exchange.HttpProxy.ProxyRequestHandler.CallThreadEntranceMethod(Action method) +59

[AggregateException: One or more errors occurred.]Microsoft.Exchange.HttpProxy.ProxyRequestHandler.EndProcessRequest(IAsyncResult result) +414
System.Web.CallHandlerExecutionStep.InvokeEndHandler(IAsyncResult ar) +231
System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar) +172

Öncelikle EMS (Exchange Management Shell) çalıştırıyoruz aşağıdaki komutla yeni bir AUTH sertifikası oluşturuyoruz, komut içerisinde ki domain adını kendi domaininizle değiştirmeniz yeterli olacaktır.

New-ExchangeCertificate -KeySize 2048 -PrivateKeyExportable $true -SubjectName "cn=Microsoft Exchange Server Auth Certificate" -FriendlyName "Microsoft Exchange Server Auth Certificate" -DomainName "cozumpark.com.tr"

Yeni sertifika oluşumu sırasında, varsayılan olarak çalışan SMTP sertifikasının üzerine yeni bir sertifika yazılsın mı diye sizden bir onay isteyecek, buraya (Y) yaparak devam edebilirsiniz. Sertifika oluşumu sonrası sertifikamız bir parmak izi oluşturacak. Oluşturulan bu alfa sayısal parmak izini, bir sonraki komutumuz da kullanacağımız için not alalım.

Set-AuthConfig -NewCertificateThumbprint <Thumbprint Kodu> -NewCertificateEffectiveDate (Get-Date)

Sertifikamızı dağıtmak için kullandığımız komutu çalıştırdığımız da Sertifikanın geçerlilik tarihi ile bizden bir onay istiyor (Y) yaparak işleme devam ediyoruz.

Yeni oluşturduğumuz Microsoft Exchange Auth Sertifikasını tüm sunucularımız da yayımlamak için aşağıdaki komutu kullanıyoruz. (Bu komut ortamınız da bulunan tüm Exchange Sunucularında, oluşturulan sertifikayı yayımlayacaktır.)

Set-AuthConfig -PublishCertificate

Ortamınızda bulunan eski OAUTH sertifikasını anahtarını temizlemek için aşağıdaki komutu kullanıyoruz

Set-AuthConfig -ClearPreviousCertificate

Microsoft Exchange Service Host Service’ni yeniden başlatmamız gerekiyor, bunun için aşağıda ki komutu kullanabilirsiniz yada services.msc üzerinden restart yapabilirsiniz.

Restart-Service "MSExchangeServiceHost"

Sonra IIS servisini yeniden başlatmamız gerekiyor, bunun için IISRESET komutunu kullanmamız yeterli. Yada IIS üzerinden ECP ve OWA Poollarını Recycle yapabilirsiniz.

Restart-WebAppPool "MSExchangeOWAAppPool"
Restart-WebAppPool "MSExchangeECPAppPool"

Bu işlemlerden sonra 2 – 3 saat beklemeniz gerekebilir, OAuth sertifkasının yayımlaması 2 – 3 saat sürebiliyor. Bekleme süresi boyunca sunucuyu yeniden başlatmamanız gerekmektedir.

Eski OAuth sertifikasını Silme İşlemi

Eski Microsoft Exchange Server Auth Certificate silme işlemini ECP üzerinden de yapabilmekteyiz. ECP üzerinden yapmak için Servers – Certificates alanına geliyoruz, burda 2 adet OAuth sertifikası göreceğiz onun için dikkatli olmamız gerekmektedir.

Bizim yeni oluşturduğumuz OAuth sertifikasını Thumprint kodu “6BC7DD3031A42E4A7F4732E1A69794E5EC8EC0E3” şeklindeydi. İlgili sertifikanın içeriğini açıyorum ve Thumbprint kodlarını eşleştiriyorum.

Diğer sertifikayı üst tarafta bulunan “Remove” butonu ile silebiliriz.

EMS üzerinden silebilmek için aşağıdaki komut setlerini kullanmamız yeterli olacak. Öncelikle ortamımız da bulunan tüm sertifikaları listeliyoruz.

Ortamımdan kaldırmak istediğim Sertifikanın Thumbprint kodu “47D45E9E2A6AF54463B3FF7D3EA74B0E2C8BCC79” şeklinde.

Remove-ExchangeCertificate -Thumbprint 47D45E9E2A6AF54463B3FF7D3EA74B0E2C8BCC79

Kaldırma işlemi için bizden onay istiyor ve (Y) yaparak işlemi onayladıktan sonra ortamımızdan ilgili sertifika silinmiş oluyor.

Not: İhtiyacınız olmadığından %100 emin olana kadar hiç bir sertifikayı kaldırmayın. Sertifikayı kaldırmadan önce bir hafta veya daha uzun süre bırakmanız iyi olacaktır.

Hybrid bir ortamınız varsa, Azure AD değişikliklerini güncelleştirmek için Hybrid Configration sihirbazını çalıştırmanız yeterli olacaktır.

AOuth sertifikası yayımlandıktan sonra ortamınızda bulunan Exchange Server için ECP/OWA erişimlerinizde sorun olmayacaktır.

Server Error in ‘/owa’ Application hatası ile bir çok sebeple karşılabilmekteyiz. Bir diğer hatamız ise aşağıdaki hata kodlarındaki gibidir;

Server Error in ‘/owa’ Application.
https://EXC-localhost/owa/auth/errorFE.aspx?CafeError=SSLCertificateProblem
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.Exception Details: System.Web.HttpException: EXC-localhost/owa/auth/errorFE.aspx?CafeError=SSLCertificateProblemSource Error:An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.Stack Trace:[HttpException (0x80004005): https://EXC-localhost/owa/auth/errorFE.aspx?CafeError=SSLCertificateProblem]Microsoft.Exchange.HttpProxy.FbaModule.OnBeginRequestInternal(HttpApplication httpApplication) +441
Microsoft.Exchange.HttpProxy.<>c__DisplayClass16_0.b__0() +1672
Microsoft.Exchange.Common.IL.ILUtil.DoTryFilterCatch(Action tryDelegate, Func1 catchDelegate) +35
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +142
System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +75
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +93Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.8.3928.02 filterDelegate, Action

Bu hatanın ortaya çıkmasının sebebi ise;

Exchange Server CU yüklemesi yada sunucu üzerindeki sertifikayı kaldırdığımızda olmaktadır.

Exchange Server sunucunuz üzerinde IIS penceresini açalım ve Siteler nesnesini genişletelim. Burda Default Web Sites ve Exchange BackEnd bulunmaktadır.

Default Web Site yapılandırmasını kontrol etme

Site Bindings altında 2 tane “HTTPS” kayıt bulunmakta, bu iki kayıt altındaki SSL sertifikalarımızı kontrol etmemiz gerekiyor.

Bu hata IIS’deki Exchange web sitelerine SSL sertifikası yapılandırılmadığından oluşmaktadır. Sertifikaları hem Exchange Default Web Site’ye hem de Exchange Back End bağlamamız gerekmektedir.

Eğer üçüncü taraftan imzalı bir sertifikanız varsa bu adımlarda o sertifikayı seçmeniz gerekiyor, benim örneğimde ben Exchange tarafından imzalanan default sertifikayı seçerek ilerleyeceğim. Exchange tarafından imzalı sertifika Exchange kurulumu sırasında otomatik oluşturulmaktadır.

IP Adresi 127.0.0.1 olan HTTPS kaydını açtığım zaman Sertifikanın seçili olmadığını görüyorum ve hemen bir sertifika ataması yapıyorum.

Şimdi ikinci HTTPS kaydımız üzerindeki kontrolleri gerçekleştirmemiz gerekiyor ve aynı işlemi onun üzerindende yapılması lazım.

Bu kayıt üzerindede seçili bir sertifika bulunmamakta, bunun üzerindede Exchange tarafından imzalanmış sertifikamı seçiyorum.

Default Web Site tarafındaki SSL bağlamlarımızı kontrol edip düzenlemeleri yaptık, şimdi Back End tarafında geçebiliriz.

Burda türü HTTPS olan ve Portu 444 olan kaydımızı kontrol edeceğiz.

Açtığım zaman burdada bir sertifika seçili olmadığını görüyorum.

Burası içinde Microsoft Exchange Sertifikasını uyguluyorum.

İki site üzerindede kontrol işlemlerini yaptık ve SSL düzenlemesini gerçekleştirdikten sonra, IIS Reset yapmamız gerekiyor.

Tüm işlemleri yaptıktan sonra ECP/OWA erişimi sağlayabilirsiniz.

İlgili Makaleler

2 Yorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu