在 Windows Server 2016 中管理 AD FS 和 WAP 中的 TLS/SSL 证书

本文介绍如何将新的 TLS/SSL 证书部署到 Active Directory 联合身份验证服务(AD FS)和 Web 应用程序代理(WAP)服务器。

注释

为 AD FS 服务器场今后替换 TLS/SSL 证书的建议方法是使用 Microsoft Entra Connect。 有关详细信息,请参阅 更新 Active Directory 联合身份验证服务(AD FS)场的 TLS/SSL 证书

获取 TLS/SSL 证书

对于生产 AD FS 场,建议使用公开信任的 TLS/SSL 证书。 AD FS 通过将证书签名请求(CSR)提交到第三方公共证书提供程序来获取此证书。 有多种方法可以生成 CSR,包括从 Windows 7 或更高版本电脑生成 CSR。 供应商应提供此过程的文档。

所需的证书

应在所有 AD FS 和 WAP 服务器上使用通用 TLS/SSL 证书。 有关详细要求,请参阅 AD FS 和 Web 应用程序代理 TLS/SSL 证书要求

TLS/SSL 证书要求

有关要求(包括命名信任根和扩展)请参阅 AD FS 和 Web 应用程序代理 TLS/SSL 证书要求

替换 AD FS 的 TLS/SSL 证书

注释

AD FS TLS/SSL 证书与 AD FS 管理管理单元中找到的 AD FS 服务通信证书不同。 若要更改 AD FS TLS/SSL 证书,需要使用 PowerShell。

首先,确定 AD FS 服务器是运行默认证书身份验证绑定模式还是备用客户端 TLS 绑定模式。

替换在默认证书身份验证绑定模式下运行的 AD FS 的 TLS/SSL 证书

AD FS 默认在端口 443 上执行设备证书身份验证,在端口 49443 上执行用户证书身份验证(或不是 443 的可配置端口)。 在此模式下,使用 PowerShell cmdlet Set-AdfsSslCertificate 管理 TLS/SSL 证书,如以下步骤所示:

  1. 首先,需要获取新证书。 可以通过将证书签名请求(CSR)提交到第三方公共证书提供程序来获取它。 有多种方法可以生成 CSR,包括从 Windows 7 或更高版本计算机生成 CSR。 供应商应提供此过程的文档。

  2. 从证书提供程序获取响应后,将其导入到每个 AD FS 和 WAP 上的本地计算机存储。

  3. AD FS 服务器上,使用以下 cmdlet 安装新的 TLS/SSL 证书:

Set-AdfsSslCertificate -Thumbprint '<thumbprint of new cert>'

可以通过执行以下命令找到证书指纹:

dir Cert:\LocalMachine\My\

替换在备用 TLS 绑定模式下运行的 AD FS 的 TLS/SSL 证书

在备用客户端 TLS 绑定模式下配置时,AD FS 在端口 443 上执行设备证书身份验证。 它还在不同的主机名上对端口 443 执行用户证书身份验证。 用户证书主机名是 AD FS 主机名前面加上 certauth,例如 certauth.fs.contoso.com。 在此模式下,使用 PowerShell cmdlet Set-AdfsAlternateTlsClientBinding 管理 TLS/SSL 证书。 此 cmdlet 不仅管理备用客户端 TLS 绑定,还管理 AD FS 设置 TLS/SSL 证书的所有其他绑定。

使用以下步骤替换在备用 TLS 绑定模式下运行的 AD FS 的 TLS/SSL 证书。

  1. 首先,需要获取新证书。 可以通过将证书签名请求(CSR)提交到第三方公共证书提供程序来获取它。 有多种方法可以生成 CSR,包括从 Windows 7 或更高版本计算机生成 CSR。 供应商应提供此过程的文档。

  2. 从证书提供程序获取响应后,将其导入到每个 AD FS 和 WAP 上的本地计算机存储。

  3. AD FS 服务器上,使用以下 cmdlet 安装新的 TLS/SSL 证书:

Set-AdfsAlternateTlsClientBinding -Thumbprint '<thumbprint of new cert>'

可以通过执行以下命令找到证书指纹:

dir Cert:\LocalMachine\My\

默认证书身份验证绑定和备用 TLS 绑定模式下的 TLS/SSL 证书的其他注意事项

  • Set-AdfsSslCertificateSet-AdfsAlternateTlsClientBinding cmdlet 是多节点 cmdlet,因此它们只需从主服务器运行。 cmdlet 还会更新场中的所有节点。 此更改是 Server 2016 中的新增功能。 在 Server 2012 R2 上,必须在每台服务器上运行 cmdlet。
  • Set-AdfsSslCertificateSet-AdfsAlternateTlsClientBinding cmdlet 必须仅在主服务器上运行。 主服务器必须运行 Server 2016,并且应将场行为级别提高到 2016。
  • Set-AdfsSslCertificateSet-AdfsAlternateTlsClientBinding cmdlet 使用 PowerShell 远程处理来配置其他 AD FS 服务器,请确保在其他节点上打开端口 5985(TCP)。
  • Set-AdfsSslCertificateSet-AdfsAlternateTlsClientBinding cmdlet 命令授予 adfssrv 主体对 TLS/SSL 证书的私钥读取权限。 此主体表示 AD FS 服务。 无需向 AD FS 服务帐户授予对 TLS/SSL 证书私钥的读取访问权限。

替换 Web 应用程序代理的 TLS/SSL 证书

如果要同时配置这两种身份验证模式(WAP 上的默认证书身份验证绑定或备用客户端 TLS 绑定模式),可以使用 Set-WebApplicationProxySslCertificate cmdlet。 若要替换每个 WAP 服务器上的 WAP TLS/SSL 证书,请使用以下 cmdlet 安装新的 TLS/SSL 证书:

Set-WebApplicationProxySslCertificate -Thumbprint '<thumbprint of new cert>'

如果上述 cmdlet 由于旧证书已过期而失败,请使用以下 cmdlet 重新配置代理:

$cred = Get-Credential

输入作为 AD FS 服务器上的本地管理员的域用户的凭据

Install-WebApplicationProxy -FederationServiceTrustCredential $cred -CertificateThumbprint '<thumbprint of new cert>' -FederationServiceName 'fs.contoso.com'