Mohu obnovit Microsoft Exchange Server Auth certifikát bez přerušení služeb? Ano, je to možné.

Mohu obnovit Microsoft Exchange Server Auth certifikát bez přerušení služeb? Ano, je to možné.

Mohu obnovit Microsoft Exchange Server Auth certifikát bez přerušení služeb? Ano je to možné.

Dnes jsem si ve svém LABu připravil postup, jak nahradit současně provozovaný Microsoft Exchange Server Auth certifikát, kterému se blíží datum expirace novým certifikátem.

Jak mohu zjistit blížící se datum expirace u certifikátů?

Pomocí Exchange admin centra (ECP) si v sekci servers (1), certificates (2). V pravé části řádku (3) se zobrazí datum expirace.

Nebo je možné si tyto certifikáty vypsat pomocí PowerShellu v Exchange Management Shell (EMS) konsoli.

Protože je práce s PowerShellem rychlejší a efektivnější, tak jsem celý návod připravil pomocí PowerShell příkazů. Určitě není nutné se toho bát.

Nejprve si pomocí příkazu níže vypíšu všechny certifikáty, které na Exchange serveru mám.

(Get-AuthConfig).CurrentCertificateThumbprint | Get-ExchangeCertificate | Format-List Subject, Thumbprint, NotAfter, NotBefore

Zobrazí se mi výpis všech certifikátů vč. názvu, otisku a platnosti.

Zde se soustředím primárně na certifikát Microsoft Exchange Server Auth Certificate.

Příprava nového certifikátu.

Nejprve si vytvořím nový certifikát. Jeho vlastnosti načtu do proměnné $newAuthCertificate abych s nimi mohl dále pracovat.

$newAuthCertificate = New-ExchangeCertificate -KeySize 2048 -PrivateKeyExportable $true -SubjectName "cn=Microsoft Exchange Server Auth Certificate" -FriendlyName "Microsoft Exchange Server Auth Certificate" -DomainName @()

Po spuštění příkazu jsem dotázán, zda chci novým certifikátem nahradit jiný certifikát?

Žádný přepis certifikátu nechci, protože náhradu za nově vytvořený certifikát chci provést až po nasazení nového certifikátu na další nezbytné servery, takže napíšu N.

Confirm
Overwrite the existing default SMTP certificate?

Current certificate: ‚BCD2A02BFD52F27F66EF75442EFE9971C9F3BCF8‘ (expires 03.12.2026 0:59:59)
Replace it with certificate: ‚068097FE01A0170DAED3E652C534ED40B94CE047‘ (expires 22.05.2031 15:08:14)
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is „Y“): N

Zároveň je dobré si hlídat podle otisk (thumbprint) certifikátu, který se mi nabízel. Např. v mém případě se nabízel wildcard certifikát, který má také SMTP službu.

Druhým příkazem nastavím Auth konfiguraci nového certifikátu.

Set-AuthConfig -NewCertificateThumbprint $newAuthCertificate.Thumbprint -NewCertificateEffectiveDate (Get-Date).AddHours(48)

Ještě než spustíte tento příkaz, tak bych rád vysvětlil, co znamená AddHours(48). Je to přidaný počet hodin (posun), po kterou bude Exchange server stále používat současný certifikát, který nahrazuji. Jak je psáno níže, tak nový certifikát vyžaduje nejméně 48 hodin pro nasazení na všechny nezbytné servery v rámci infrastruktury.

Confirm
The new certificate effective date is not at least „48“ hours in the future and may not be deployed on all necessary servers. Do you wish to continue?
[Y] Yes [A] Yes to All [N] No [L] No to All [?] Help (default is „Y“): Y

To byl právě ten důvod, proč jsem na počátku certifikát nenahrazoval a určil mu čas na posun účinnosti o určitý počet hodin.

Pokud máte menší infrastrukturu, tak lze dobu zkrátit. Např. v mém LABu, kde mám 2x DC a 1 Exchange Server stačilo k dokončení distribuce nového certifikátu 2 – 2,5 hodiny, takže mně k nasazení stačilo dát do příkazu 3 hodiny. Nasazení certifikátu na nezbytné servery probíhá automaticky, takže není nutná žádná aktivita z moji strany.

Když nyní opakuji výpis, tak již vidím dva certifikáty. Původní certifikát (1) a nově vystavený certifikát (2).

Pomocí příkazu Get-AuthConfig | fl * si mohu vypsat Auth konfiguraci.

Zde mám přehled konfigurace vč. stavu certifikátů (jejich otisků):

  • Otisk současného certifikátu (ten s blížící se expirací)
  • Otisk předešlého certifikátu (tento certifikát předcházel současnému certifikátu a již neexistuje)
  • Otisk následujícího certifikátu (nově vytvořený certifikát)
  • čas účinnosti nového certifikátu (v mém případě 3 hodiny od nastavení)

Microsoft nabízí také skript nazvaný MonitorExchangeAuthCertificate.ps1, který je možné stáhnout zde.

Pro spouštění skriptů jsem si vytvořil adresář C:\Scripts na Exchange serveru. Tam jsem uložil stažený skript.

Dále stačí spoustit skript pomocí příkazu níže a zvalidovat stav těchto certifikátů.

C:\Scripts\

.\MonitorExchangeAuthCertificate.ps1 -ValidateAndRenewAuthCertificate $true

Skript mi přehledně vypsal současně používaný certifikát a následný certifikát. U obou mám také informaci o počtu dnů platnosti certifikátu.

Po uplynutí nastavené doby pro nasazení nového certifikátu spoustím následující příkaz:

Restart-Service "MSExchangeServiceHost"

Nyní když opět nechám vypsat Auth konfiguraci, tak vidím, že zde mám už jen 2 otisky certifikátů:

  • Otisk současného certifikátu (to je můj nově vystavený certifkát)
  • Otisk předešlého certifikátu (to byl původní certifikát s blížícím se koncem platnosti)

Pomocí skriptu MonitorExchangeAuthCertificate.ps1 mohu opět zkontrolovat stav certifikátů:

Jak je vidět, tak nyní již je v roli Auth Certificate nově vytvořený certifikát.

Po přepojení na nový certifkát je možné naplánovat zrušení původního certifikátu. Není ovšem kam spěchat a raději doporučuji třeba několik dnů počkat.

V mém případě má původní certifikát otisk: 232480D4F3599DFB4DB3E6160F64BCF60A6CE47B, takže pro odebrání původního certifikátu spustím následující příkaz.

Remove-ExchangeCertificate -Thumbprint 232480D4F3599DFB4DB3E6160F64BCF60A6CE47B

A to je celé. Máme nahrazený Microsoft Exchange Server Auth Certificate bez výpadku služeb.

Leave a Reply