续订 Microsoft 365 和 Microsoft Entra ID 的联合证书
概述
若要在 Microsoft Entra ID 与 Active Directory 联合身份验证服务(AD FS)之间成功联合,AD FS 用来将安全令牌签名为 Microsoft Entra ID 的证书应与Microsoft Entra ID 中配置的内容匹配。 任何不匹配都可能导致信任断开。 Microsoft Entra ID 可确保在部署 AD FS 和 Web 应用程序代理时(用于 Extranet 访问)时保持此信息保持同步。
注意
本文提供了有关管理联合证书的信息。 有关紧急轮换的信息,请参阅 AD FS 证书的紧急轮换
本文提供了其他信息来管理令牌签名证书,并在以下情况下与 Microsoft Entra ID 保持同步:
- 你未部署 Web 应用程序代理,因此联合元数据在 Extranet 中不可用。
- 你未对令牌签名证书使用默认的 AD FS 配置。
- 你使用的是第三方标识提供者。
重要
Microsoft强烈建议使用硬件安全模块(HSM)来保护和保护证书。 有关详细信息,请参阅有关保护 AD FS 的最佳做法下 硬件安全模块。
AD FS 的令牌签名证书默认配置
令牌签名和令牌解密证书通常是自签名证书,并且适用于一年。 默认情况下,AD FS 包含名为 AutoCertificateRollover 的自动续订流程。 如果使用 AD FS 2.0 或更高版本,Microsoft 365 和 Microsoft Entra ID 会在证书过期之前自动更新证书。
来自 Microsoft 365 管理中心或通过电子邮件发送的续订通知
备注
若收到电子邮件,要求续订 Office 证书,请参阅管理对令牌签名证书的更改,检查是否需要采取任何操作。 Microsoft知道可能出现的问题,即使不需要执行任何操作,也可能导致发送证书续订通知。
Microsoft Entra ID 将尝试监视联合元数据,并按照此元数据的指示更新令牌签名证书。 在令牌签名证书到期前的 35 天,Microsoft Entra ID 会通过轮询联合元数据来检查是否有可用的新证书。
- 如果它可以成功轮询联合元数据并检索新证书,则不会向用户发出任何电子邮件通知。
- 如果无法检索新的令牌签名证书,可能是由于无法访问联合元数据或未启用自动证书滚动,Microsoft Entra ID 将发出电子邮件。
重要
如果使用 AD FS,为了确保业务连续性,请验证您的服务器是否具有以下更新,以免发生由于已知问题导致的身份验证失败。 这可缓解此续订和将来续订期的已知 AD FS 代理服务器问题:
Server 2012 R2 - Windows Server 2014 年 5 月汇总
Server 2008 R2 and 2012 - 在 Windows Server 2012 或 Windows 2008 R2 SP1 中通过代理进行身份验证失败
检查证书是否需要更新
步骤 1:检查 AutoCertificateRollover 状态
在 AD FS 服务器上,打开 PowerShell。 检查 AutoCertificateRollover 值是否设置为 True。
Get-Adfsproperties
注意
如果使用 AD FS 2.0,请先运行 Add-Pssnapin Microsoft.Adfs.Powershell。
步骤 2:确认 AD FS 和 Microsoft Entra ID 同步
在 AD FS 服务器上,打开 MSOnline PowerShell 提示符,并连接到Microsoft Entra ID。
注意
MSOL-Cmdlets 是 MSOnline PowerShell 模块的一部分。 可以直接从 PowerShell Gallery 下载 MSOnline PowerShell 模块。
Install-Module MSOnline
注意
截至 2024 年 3 月 30 日,Azure AD 和 MSOnline PowerShell 模块已弃用。 若要了解详细信息,请阅读弃用更新。 在此日期之后,对这些模块的支持仅限于迁移到 Microsoft Graph PowerShell SDK 的帮助和安全修复。 弃用的模块将继续在 2025 年 3 月 30 日运行。
建议迁移到 Microsoft Graph PowerShell,以便与 Microsoft Entra ID(前 Azure AD)交互。 有关常见迁移问题,请参阅 迁移常见问题解答。 注意:在 2024 年 6 月 30 日之后, MSOnline 版本 1.0.x 可能会遇到中断。
使用 MSOnline PowerShell-Module 连接到 Microsoft Entra ID。
Import-Module MSOnline
Connect-MsolService
检查指定域的 AD FS 和 Microsoft Entra ID 信任属性中配置的证书。
Get-MsolFederationProperty -DomainName <domain.name> | FL Source, TokenSigningCertificate
如果两个输出中的指纹匹配,则证书与 Microsoft Entra ID 同步。
步骤 3:检查证书是否即将过期
在 Get-MsolFederationProperty 或 Get-AdfsCertificate 输出中的“Not After”下面检查日期。如果日期相隔不到 35 天,则应该采取操作。
AutoCertificateRollover | 与 Microsoft Entra ID 同步的证书 | 可公开访问联邦元数据 | 有效性 | 操作 |
---|---|---|---|---|
是的 | 是的 | 是的 | - | 无需执行任何操作。 请参阅自动续订令牌签名证书。 |
是的 | 不 | - | 少于 15 天 | 立即续订。 请参阅手动续订令牌签名证书。 |
不 | - | - | 少于 35 天 | 立即续订。 请参阅手动续订令牌签名证书。 |
[-]无所谓
自动续订令牌签名证书(建议)
如果满足以下两个条件,则无需执行任何手动步骤:
- 已部署 Web 应用程序代理,该代理可从 Extranet 启用对联合元数据的访问。
- 你使用的是 AD FS 默认配置(已启用 AutoCertificateRollover)。
检查以下内容以确认证书可以自动更新。
1.AD FS 属性 AutoCertificateRollover 必须设置为 True。 这表示 AD FS 会在旧令牌过期之前自动生成新的令牌签名和令牌解密证书。
2.AD FS 联合元数据可公开访问。 通过在公用互联网上的计算机上访问以下 URL(不使用公司网络),检查您的联合元数据是否可被公开访问。
https://(your_FS_name)/federationmetadata/2007-06/federationmetadata.xml
其中,(your_FS_name)
将替换为你的组织使用的联合身份验证服务主机名,例如 fs.contoso.com。 如果能够成功验证这两个设置,则无需执行任何其他操作。
示例:https://fs.contoso.com/federationmetadata/2007-06/federationmetadata.xml
手动更新令牌签名证书
可以选择手动续订令牌签名证书。 例如,以下方案可能更适用于手动续订:
- 令牌签名证书不是自签名证书。 这种情况最常见的原因是,组织通过组织证书颁发机构来管理注册的 AD FS 证书。
- 网络安全不允许公开提供联合元数据。
- 你要将联合域从现有联合服务迁移到新联合服务。
重要
如果要将现有联合域迁移到新的联合身份验证服务,建议按照 AD FS 证书的紧急轮换进行操作
在这些场景中,每次更新令牌签名证书时,还必须通过使用 PowerShell 命令 Update-MsolFederatedDomain 来更新 Microsoft 365 域。
步骤 1:确保 AD FS 具有新的令牌签名证书
非默认配置
如果使用 AD FS 的非默认配置(其中 AutoCertificateRollover 设置为 False),则可能使用的是自定义证书(而不是自签名)。 有关如何续订 AD FS 令牌签名证书的详细信息,请参阅 联合服务器的证书要求。
联合元数据不对公众开放
另一方面,如果 AutoCertificateRollover 设置为 True,但无法公开访问联合元数据,请先确保 AD FS 已生成新的令牌签名证书。 通过执行以下步骤,确认你拥有新的令牌签名证书:
验证是否已登录到主 AD FS 服务器。
打开 PowerShell 命令窗口并运行以下命令,检查 AD FS 中的当前签名证书:
Get-ADFSCertificate -CertificateType Token-Signing
注意
如果使用 AD FS 2.0,应首先运行
Add-Pssnapin Microsoft.Adfs.Powershell
。查看命令输出中是否存在任何已列出的证书。 如果 AD FS 生成了一个新证书,那么您应该在输出中看到两个证书:一个证书的 IsPrimary 值为 True,且其 NotAfter 日期在 5 天内;另一个证书的 IsPrimary 为 False,且 NotAfter 日期约为一年后。
若只看到一个证书,且 NotAfter 日期在 5 天内,则需要生成新的证书。
若要生成新证书,请在 PowerShell 命令提示符处执行以下命令:
Update-ADFSCertificate -CertificateType Token-Signing
。再次运行以下命令来验证更新:
Get-ADFSCertificate -CertificateType Token-Signing
此时会列出两个证书,其中一个的 NotAfter 日期大约为未来的 1 年,其 IsPrimary 值为 False。
步骤 2:更新 Microsoft 365 信任的新令牌签名证书
使用将要用于信任的新令牌签名证书更新 Microsoft 365,如下所示。
- 打开 Azure AD PowerShell 模块。
- 运行
$cred=Get-Credential
。 当此 cmdlet 提示输入凭据时,请键入云服务管理员帐户凭据。 - 运行
Connect-MsolService -Credential $cred
。 此 cmdlet 将你连接到云服务。 在运行该工具安装的任何其他 cmdlet 之前,需要创建将你连接到云服务的上下文。 - 如果在不是 AD FS 主联合服务器的计算机上运行这些命令,请运行
Set-MSOLAdfscontext -Computer <AD FS primary server>
,其中 <AD FS 主服务器> 是主 AD FS 服务器的内部 FQDN 名称。 此 cmdlet 创建将你连接到 AD FS 的上下文。 - 运行
Update-MSOLFederatedDomain -DomainName <domain>
。 此 cmdlet 将 AD FS 中的设置更新为云服务,并配置两者之间的信任关系。
注意
如果需要支持多个顶级域(例如 contoso.com 和 fabrikam.com),则必须将 SupportMultipleDomain 开关与任何 cmdlet 一起使用。 有关详细信息,请参阅对多个顶级域的支持。
如果租户与多个域联合,则需要为 Get-MsolDomain -Authentication Federated
的输出中列出的所有域运行 Update-MsolFederatedDomain
。 这可确保所有联合域都更新到 Token-Signing 证书。
可以通过运行以下命令来实现此目的:Get-MsolDomain -Authentication Federated | % { Update-MsolFederatedDomain -DomainName $_.Name -SupportMultipleDomain }
使用 Microsoft Entra Connect 修复Microsoft Entra ID 信任
如果使用 Microsoft Entra Connect 配置了 AD FS 场和Microsoft Entra ID 信任,则可以使用 Microsoft Entra Connect 来检测是否需要对令牌签名证书执行任何操作。 如果需要续订证书,可以使用 Microsoft Entra Connect 执行此操作。
有关详细信息,请参阅 修复信任。
AD FS 和Microsoft Entra 证书更新步骤
令牌签名证书是标准 X509 证书,用于安全地对联合服务器颁发的所有令牌进行签名。 令牌解密证书是用于解密任何传入令牌的标准 X509 证书。
默认情况下,AD FS 配置为在初始配置时间和证书即将到期日期时自动生成令牌签名和令牌解密证书。
Microsoft Entra ID 尝试在当前证书到期前 35 天从联合身份验证服务元数据中检索新证书。 如果此时新证书不可用,Microsoft Entra ID 会继续定期监视元数据。 一旦新证书在元数据中可用,域的联合设置就会更新为新的证书信息。 如果在 NextSigningCertificate/SigningCertificate 中看到新证书,可以使用 Get-MsolDomainFederationSettings
进行验证。
有关 AD FS 中的令牌签名证书的详细信息,请参阅 获取和配置 AD FS 的令牌签名和令牌解密证书