摘要
从 2023 年 1 月安全更新 (SU) for Microsoft Exchange Server 开始,我们引入了一项新功能,使管理员能够配置 PowerShell 序列化有效负载的基于证书的签名。 在所有基于 Exchange 的服务器上安装 SU 后,Exchange Server管理员必须手动启用此功能。 本文提供在 Exchange Server 中启用 PowerShell 序列化数据的基于证书签名的步骤。
先决条件
启用此功能的先决条件:
-
请确保环境中所有基于 Exchange 的服务器都安装了 2023 年 1 月 SU 或更高版本的 SU。 如果在更新所有服务器之前启用此功能,则可能会出现反序列化失败并触发其他问题。
-
请确保在启用证书签名之前和之后) 边缘传输服务器 (的所有基于 Exchange 的服务器上配置并可用有效的Exchange Server身份验证证书。
可以运行 MonitorExchangeAuthCertificate.ps1 脚本,在环境中的 Exchange-bases 服务器上检查有效的身份验证证书。 该脚本还会检查身份验证证书是否会在 60 天内过期,并有助于轮换证书。 有关 MonitorExchangeAuthCertificate.ps1的详细信息,请参阅监视 Exchange AuthCertificate
若要手动检查身份验证证书可用性和有效性,请参阅身份验证证书可用性和有效性。
如果需要) ,强烈建议使用 MonitorExchangeAuthCertificate.ps1 脚本 (或创建一个新脚本。 这是因为脚本还可以续订过期的身份验证证书。 该脚本包括手动执行模式, (验证身份验证证书的可用性或验证并执行操作(如果需要) )。 该脚本还包括使用 Windows 任务计划程序工作的自动化模式。
解决方案
对于运行 Exchange Server 2019 或 2016 Exchange Server 的服务器, (更新为 2023 年 1 月 SU 或更高版本)
-
在环境中运行 Exchange Server 的服务器上运行以下 cmdlet (EMS) :
New-SettingOverride -Name "EnableSigningVerification" -Component Data -Section EnableSerializationDataSigning -Parameters @("Enabled=true") -Reason "Enabling Signing Verification"
此 cmdlet 使环境中运行Exchange Server 2019、2016 或 2013 的所有服务器都可以对 PowerShell 序列化有效负载进行证书签名。 不必在每个服务器上运行 cmdlet。 -
通过运行以下 cmdlet 刷新 VariantConfiguration 参数:
Get-ExchangeDiagnosticInfo -Process Microsoft.Exchange.Directory.TopologyService -Component VariantConfiguration -Argument Refresh -
要应用新设置,请重启万维网发布服务和 Windows 进程激活服务 (WAS)。 为此,请运行以下 cmdlet:
Restart-Service -Name W3SVC, WAS -Force注意: 仅在运行设置替代 cmdlet 的基于 Exchange Server 的服务器上重启这些服务。
对于运行 Exchange Server 2013 的服务器
如果环境中运行 Microsoft Exchange Server 2013 的服务器,则必须在每个服务器上配置注册表项。 指定以下设置。
注册表项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ExchangeServer\v15\Diagnostics
价值:EnableSerializationDataSigning
类型: String
数据:1
若要在基于 Exchange Server 2013 的服务器上创建注册表值,请运行以下 cmdlet:
- New-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\ExchangeServer\v15\Diagnostics -Name "EnableSerializationDataSigning" -Value 1 -Type String
要应用新设置,请重启万维网发布服务和 Windows 进程激活服务 (WAS)。 为此,请运行以下 cmdlet:
- Restart-Service -Name W3SVC, WAS -Force
注意: 在环境中进行注册表更改的所有基于 Exchange Server 2013 的服务器上重启这些服务。
已知问题
-
如果启用了对序列化数据进行签名的功能,则过期的身份验证证书会阻止 Get-ExchangeCertificate cmdlet 返回证书详细信息。
-
安装 2023 年 1 月或适用于 2019、2016 或 2013 Microsoft Exchange Server的 2023 年 2 月安全更新,并启用 PowerShell 序列化有效负载的证书签名后,Exchange 工具箱和队列查看器将不会启动。 有关详细信息,请参阅启用 PowerShell 序列化有效负载的证书签名后 Exchange 工具箱和队列查看器失败 (KB5023352)。
-
如果启用了对序列化数据进行签名的功能,则 Get-ExchangeCertificate cmdlet 在安装了 Exchange 管理工具但没有其他Exchange Server角色的计算机上运行时,它不会返回可见值。 无论身份验证证书是否有效,都会发生这种情况。
-
例如,Exchange Server (附带的某些脚本,如果满足以下条件,RedistributeActiveDatabases.ps1) 将无法正常工作:
-
已启用 PowerShell 序列化有效负载签名功能。
-
不使用 Exchange RBAC 提供的默认安全组。
-
运行脚本的用户不是组织管理角色组的成员。
-