HMACProvider . GetCertificates:protectionCertificates . Length<1

De installatie van de juli security update KB5004778 voor Exchange Server 2013 CU 23 en KB5004780 voor Exchange Server 2019 CU 10 geven problemen. Deze genereren op je ECP/OWA een HMACProvider.GetCertificates:protectionCertificates.Length<1 foutmelding.

Nadat je de msp file start vanaf een elevated dosprompt en geinstalleerd hebt, moet je een schema update draaien.

Ga daarom na de installatie van de Exchange2013-KB5004778-x64-en.msp, naar de installatiemap van Exchange Server c:\program files\microsoft\exchange server\v15\bin en voer het onderstaande uit:

setup.exe /Prepareschema /IAcceptExchangeServerLicenseTerms
setup.exe /PrepareAD /IAcceptExchangeServerLicenseTerms

Daarna ben je er nog niet, binnen OWA en ECP krijg je een foutmelding. In de eventvwr tref je een HMAC error aan.

[Owa] An internal server error occurred. The unhandled exception was: Microsoft.Exchange.Diagnostics.ExAssertException: ASSERT: HMACProvider.GetCertificates:protectionCertificates.Length<1 at Microsoft.Exchange.Diagnostics.ExAssert.AssertInternal(String formatString, Object[] parameters) at Microsoft.Exchange.Clients.Common.HmacProvider.GetCertificates() at Microsoft.Exchange.Clients.Common.HmacProvider.GetHmacProvider() at Microsoft.Exchange.Clients.Common.HmacProvider.ComputeHmac(Byte[][] messageArrays) at Microsoft.Exchange.HttpProxy.FbaModule.SetCadataCookies(HttpApplication httpApplication) at Microsoft.Exchange.HttpProxy.FbaFormPostProxyRequestHandler.HandleFbaFormPost(BackEndServer backEndServer) at Microsoft.Exchange.HttpProxy.FbaFormPostProxyRequestHandler.ShouldContinueProxy() at Microsoft.Exchange.HttpProxy.ProxyRequestHandler.BeginProxyRequestOrRecalculate() at Microsoft.Exchange.HttpProxy.ProxyRequestHandler.InternalOnCalculateTargetBackEndCompleted(TargetCalculationCallbackBeacon beacon) at Microsoft.Exchange.HttpProxy.ProxyRequestHandler.<>c__DisplayClass3f.b__3e()
at Microsoft.Exchange.Common.IL.ILUtil.DoTryFilterCatch(TryDelegate tryDelegate, FilterDelegate filterDelegate, CatchDelegate catchDelegate)

De oplossing hiervoor is volgens Microsoft het vervangen van een verlopen certificaat, ook al tref je deze niet aan binnen IIS.

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

Dat geeft je een thumbprint terug.

Set-AuthConfig -NewCertificateThumbprint <ThumbprintFromStep1> -NewCertificateEffectiveDate (Get-Date) 
Set-AuthConfig -PublishCertificate 
Set-AuthConfig -ClearPreviousCertificate

En herstart nog de application pools:

Restart-WebAppPool MSExchangeOWAAppPool 
Restart-WebAppPool MSExchangeECPAppPool

Het duurt nu ENKELE! uren waarna ECP en OWA weer functioneren.