在 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 应用程序代理 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 上执行用户证书身份验证。 用户证书主机名是前面带有 certauth 的 AD FS 主机名,例如 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'