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 -AzureEnvironment AzureChinaCloud

  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 帮助 US。 有关详细信息,请参阅 证书吊销的工作原理

吊销旧的 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 吊销刷新令牌

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

后续步骤