AD FS 证书的紧急轮换

如果需要立即轮换 Active Directory 联合身份验证服务(AD FS)证书,可以按照本文中的步骤进行操作。

重要

在 AD FS 环境中轮换证书会立即吊销旧证书,并绕过联盟合作伙伴使用新证书通常需要的时间。 当信任更新以使用新证书时,此操作也可能会导致服务中断。 应在所有联合合作伙伴具有新证书后解决中断问题。

注意

强烈建议使用硬件安全模块(HSM)以保护证书。 有关详细信息,请参阅保护 AD FS 最佳做法中的 硬件安全模块 节。

确定令牌签名证书指纹

要吊销 AD FS 当前正在使用的旧令牌签名证书,需要确定令牌签名证书的指纹。 请执行以下操作:

  1. 在 PowerShell Connect-MsolService 中运行以连接到 Microsoft Online Service。

  2. 运行 Get-MsolFederationProperty -DomainName <domain> 以记录本地和云令牌签名证书指纹以及到期日期。

  3. 复制该指纹。 稍后将使用它来删除现有证书。

还可以使用 AD FS 管理以获取指纹。 转到“服务”>“证书”,右击证书,选择“查看证书”,然后选择“详细信息”。

确定 AD FS 是否自动续订证书

默认情况下,AD FS 配置为自动生成令牌签名证书和令牌解密证书。 它会在初始配置期间和证书即将到期时执行此操作。

可以运行以下 PowerShell 命令:Get-AdfsProperties | FL AutoCert*, Certificate*

AutoCertificateRollover 属性描述 AD FS 是否配置为自动续订令牌签名证书和令牌解密证书。 执行以下操作之一:

如果 AutoCertificateRollover 设置为 TRUE,请生成新的自签名证书

在本节中,你会创建 两个 令牌签名证书。 第一个证书使用 -urgent 标志,该证书会立即替换当前的主要证书。 第二个证书会用作辅助证书。

重要

你正在创建两个证书是因为 Microsoft Entra ID 保存有关上一个证书的信息。 通过创建第二个证书,将强制 Microsoft Entra ID 发布有关旧证书的信息,并将其替换为有关第二个证书的信息。

如果不创建第二个证书并将其用于更新 Microsoft Entra ID,旧的令牌签名证书可能会对用户进行身份验证。

要生成新的令牌签名证书,请执行以下操作:

  1. 确保已登录到主 AD FS 服务器。

  2. 以管理员身份打开 Windows PowerShell。

  3. 在 PowerShell 中运行以下命令以确保 AutoCertificateRollover 设置为 True:

    Get-AdfsProperties | FL AutoCert*, Certificate*

  4. 要生成新的令牌签名证书,请运行:

    Update-ADFSCertificate -CertificateType Token-Signing -Urgent

  5. 运行以下命令以验证更新:

    Get-ADFSCertificate -CertificateType Token-Signing

  6. 现在,运行以下命令以生成第二个令牌签名证书:

    Update-ADFSCertificate -CertificateType Token-Signing

  7. 你可以再次运行以下命令来验证更新:

    Get-ADFSCertificate -CertificateType Token-Signing

如果 AutoCertificateRollover 设置为 FALSE,请手动生成新证书

如果未使用默认自动生成的自签名令牌签名证书和令牌解密证书,必须手动续订和配置这些证书。 执行此操作涉及创建并导入两个新的令牌签名证书。 然后,将一个证书提升为主要证书,吊销旧证书,并将第二个证书配置为辅助证书。

首先,必须从证书颁发机构获取两个新证书,并将其导入到每个联合服务器的本地计算机个人证书存储中。 有关说明,请参阅 导入证书

重要

你正在创建两个证书是因为 Microsoft Entra ID 保存有关上一个证书的信息。 通过创建第二个证书,将强制 Microsoft Entra ID 发布有关旧证书的信息,并将其替换为有关第二个证书的信息。

如果不创建第二个证书并将其用于更新 Microsoft Entra ID,旧的令牌签名证书可能会对用户进行身份验证。

将新证书配置为辅助证书

接下来,将一个证书配置为辅助 AD FS 令牌签名或解密证书,然后将其提升为主要证书。

  1. 导入证书后,打开“AD FS 管理”控制台。

  2. 展开“服务”,然后选择“证书”。

  3. 在“操作”窗格中,选择“添加令牌签名证书”。

  4. 从已显示证书的列表中选择新证书,然后选择“确定”。

将新证书从辅助证书升级为主证书

现在,你已在 AD FS 中导入并配置新证书,需要将其设置为主要证书。

  1. 打开“AD FS 管理”控制台。

  2. 展开“服务”,然后选择“证书”。

  3. 选择辅助令牌签名证书。

  4. 在“操作”窗格中,选择“设置为主要证书”。 在提示符下,选择“确定”。

  5. 将新证书提升为主要证书后,由于旧证书仍可使用,因此应将其删除。 有关详细信息,请参阅 删除旧证书 节。

将第二个证书配置为辅助证书

现在,你已添加第一个证书,将其设为主要证书并删除旧证书后,便可导入第二个证书。 执行以下操作,从而将证书配置为辅助 AD FS 令牌签名证书:

  1. 导入证书后,打开“AD FS 管理”控制台。

  2. 展开“服务”,然后选择“证书”。

  3. 在“操作”窗格中,选择“添加令牌签名证书”。

  4. 从已显示证书的列表中选择新证书,然后选择“确定”。

用新的令牌签名证书更新 Microsoft Entra ID

  1. 打开 Azure AD PowerShell 模块。 或者,打开 Windows PowerShell,然后运行 Import-Module msonline 命令。

  2. 通过运行以下命令连接到 Microsoft Entra ID:

    Connect-MsolService

  3. 输入混合标识管理员凭据。

    注意

    如果在非主要联合服务器的计算机上运行这些命令,请先输入以下命令:

    Set-MsolADFSContext -Computer <servername>

    将 <servername> 替换为 AD FS 服务器的名称,然后,在提示符下输入 AD FS 服务器的管理员凭据。

  4. (可选)通过检查 Microsoft Entra ID 中的当前证书信息来验证是否需要更新。 为此,请运行以下命令:Get-MsolFederationProperty。 出现提示时,输入联合域的名称。

  5. 若要更新 Microsoft Entra ID 中的证书信息,请运行命令 Update-MsolFederatedDomain,然后在出现提示时输入域名。

    注意

    如果在运行此命令时收到错误,请运行 Update-MsolFederatedDomain -SupportMultipleDomain,然后在提示符下输入域名。

替换 SSL 证书

如果因泄漏需要替换令牌签名证书,还应吊销并替换 AD FS 和 Web 应用程序代理(WAP)服务器的安全套接字层(SSL)证书。

必须在颁发 SSL 证书的证书颁发机构 (CA) 吊销该证书。 这些证书通常由第三方提供商(例如 GoDaddy)颁发。 有关示例,请参阅 吊销证书 | SSL 证书 - GoDaddy 帮助 CN。 有关详细信息,请参阅 证书吊销的工作原理

吊销旧的 SSL 证书并颁发新证书后,可以替换 SSL 证书。 有关详细信息,请参阅 替换 AD FS 的 SSL 证书

删除旧证书

替换旧证书后,由于其仍可使用,因此应将其删除。 为此,请执行以下操作:

  1. 确保已登录到主 AD FS 服务器。

  2. 以管理员身份打开 Windows PowerShell。

  3. 要删除旧的令牌签名证书,请运行:

    Remove-ADFSCertificate -CertificateType Token-Signing -thumbprint <thumbprint>

更新可以使用联合元数据的联合合作伙伴

如果已更新并配置新的令牌签名或令牌解密证书,必须确保所有联合合作伙伴都已获得新证书。 此列表包括资源组织或帐户组织合作伙伴,这些合作伙伴通过信赖方信任和声明提供程序信任在 AD FS 中表示。

更新无法使用联合元数据的联合合作伙伴

如果联合合作伙伴无法使用联合元数据,必须手动向其发送新的令牌签名/令牌解密证书的公钥。 将新证书公钥(如果要包括整个链,则为 .cer 文件或 .p7b)发送给所有资源组织或帐户组织合作伙伴(通过信赖方信任和声明提供程序信任在 AD FS 中表示)。 让合作伙伴在他们那边实施更改以信任新证书。

通过 PowerShell 吊销刷新令牌

现在,要为可能具有刷新令牌的用户吊销这些令牌,并强制用户重新登录并获取新令牌。 这会将用户从其电话、当前 webmail 会话以及使用令牌和刷新令牌的其他位置中注销。 有关详细信息,请参阅 Revoke-AzureADUserAllRefreshToken。 另请参阅在 Microsoft Entra ID 中撤销用户访问权限

注意

自 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 可能会遇到中断。

后续步骤