续订 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 和 2012 — 在 Windows Server 2012 或 Windows 2008 R2 SP1 中通过代理进行身份验证失败
检查是否需要更新证书
步骤 1:检查 AutoCertificateRollover 状态
在 AD FS 服务器上打开 PowerShell。 检查 AutoCertRollover 值是否设置为 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-Cmdlet 是 MSOnline PowerShell 模块的一部分。 可以直接从 PowerShell 库下载 MSOnline PowerShell 模块。
Install-Module MSOnline
注意
我们计划在 2024 年 3 月 30 日弃用 Azure AD PowerShell。 若要了解详细信息,请阅读有关弃用的更新。
我们建议迁移到 Microsoft Graph PowerShell,以便与 Microsoft Entra ID(以前称为 Azure AD)进行交互。 Microsoft Graph PowerShell 在 PowerShell 7 上提供,支持访问所有 Microsoft Graph API。 有关常见迁移查询的解答,请参阅迁移常见问题解答。
使用 MSOnline PowerShell-Module 连接到 Microsoft Entra ID。
Import-Module MSOnline
Connect-MsolService -AzureEnvironment AzureChinaCloud
检查 AD FS 和 Microsoft Entra ID 信任属性中针对指定域配置的证书。
Get-MsolFederationProperty -DomainName <domain.name> | FL Source, TokenSigningCertificate
如果这两个输出中的指纹匹配,则表示证书已与 Microsoft Entra 同步。
步骤 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 联合元数据。 从公共 Internet(企业网络之外)上的计算机导航到以下 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 大约为未来的 1 年。
如果只看到一个证书,且 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 -AzureEnvironment AzureChinaCloud
。 此 cmdlet 会将你连接到云服务。 通过工具运行任何其他已安装的 cmdlet 之前,必须创建你将连接到云服务的上下文。 - 如果在并非用作 AD FS 主联合服务器的计算机上运行这些命令,请运行
Set-MSOLAdfscontext -Computer <AD FS primary server>
,其中 <AD FS primary server> 是主 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
。 这将确保所有联合域都更新为令牌签名证书。
可以通过运行以下命令来实现此目的: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 配置为在初始配置时以及在证书接近到期日期时自动生成令牌签名证书和令牌解密证书。
在当前证书到期 35 天前,Microsoft Entra ID 会尝试从联合身份验证服务元数据中检索新证书。 如果新证书在该时间不可用,Microsoft Entra ID 会继续每日定期监视元数据。 在元数据中获得新证书后,将立即使用新的证书信息更新域的联合身份验证设置。 如果在 NextSigningCertificate/SigningCertificate 中看到新证书,可以使用 Get-MsolDomainFederationSettings
进行验证。
有关 AD FS 中令牌签名证书的详细信息,请参阅获取和配置 AD FS 令牌签名证书和令牌解密证书