摘要
从 2023 年 1 月安全更新 (适用于 Microsoft Exchange Server 的 SU) 开始,我们引入了一项新功能,使管理员能够配置基于证书的 PowerShell 序列化有效负载签名。 在所有基于 Exchange 的服务器上安装 SU 后,必须由 Exchange Server 管理员手动启用此功能。 本文提供在 Exchange Server 中对 PowerShell 序列化数据启用基于证书的签名的步骤。
先决条件
启用此功能的先决条件:
- 请确保环境中所有基于 Exchange 的服务器都安装了 2023 年 1 月 SU 或更高版本的 SU。 如果在更新所有服务器之前启用此功能,则可能会发生反序列化故障并触发其他问题。
- 请确保在启用证书签名之前和之后) (除了边缘传输服务器之外所有基于 Exchange 的服务器配置了有效的 Exchange Server 身份验证证书并可用。
可以运行该MonitorExchangeAuthCertificate.ps1脚本来检查环境中基于 Exchange 的服务器上的有效身份验证证书。 该脚本还会检查身份验证证书是否会在 60 天内过期,并有助于轮换证书。 有关详细信息 MonitorExchangeAuthCertificate.ps1,请参阅 监视 Exchange AuthCertificate
要手动检查身份验证证书的可用性和有效性,请参阅身份验证证书的可用性和有效性。
强烈建议使用脚本 (,如果需要) ,请创建一个 MonitorExchangeAuthCertificate.ps1 新脚本。 这是因为脚本还可以续订过期的身份验证证书。 该脚本包括手动执行模式, (验证身份验证证书的可用性或验证并采取措施(如有必要) )。 该脚本还包括使用 Windows 任务计划程序工作的自动化模式。
解决方法
对于运行 Exchange Server 2019 或 Exchange Server 2016 的服务器, (更新到 2023 年 1 月或更高版本的 SU 或更高版本)
在你的环境中运行 Exchange Server 的服务器上,在 Exchange 命令行管理程序 (EMS) 中运行以下 cmdlet:
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
类型: 字符串
数据: 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 返回证书详细信息。
安装适用于 Microsoft Exchange Server 2019、2016 或 2013 的 2023 年 1 月或 2023 年 2 月安全更新,并启用 PowerShell 序列化有效负载的证书签名后,Exchange 工具箱和队列查看器不会启动。 有关详细信息,请参阅启用 PowerShell 序列化有效负载的证书签名后 Exchange 工具箱和队列查看器失败 (KB5023352) 。
如果启用了对序列化数据签名的功能,则当 Get-ExchangeCertificate cmdlet 在安装了 Exchange 管理工具但没有其他 Exchange Server 角色的计算机上运行时,它不会返回可见值。 无论身份验证证书是否有效,这都会发生。
例如,Exchange Server (中包含的某些脚本 RedistributeActiveDatabases.ps1) 如果满足以下条件,则无法正常工作:
- 已启用对 PowerShell 序列化有效负载功能进行签名。
- 您不使用 Exchange RBAC 提供的默认安全组。
- 运行脚本的用户不是组织管理角色组的成员。