在 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 和 Web 应用程序代理 TLS/SSL 证书要求。
所需证书
应在所有 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 证书,如以下步骤所示:
首先,需要获取新证书。 可以通过向第三方公共证书提供程序提交证书签名请求 (CSR) 来获取证书。 有多种方法可以生成 CSR,例如从 Windows 7 或更高版本的电脑生成 CSR。 供应商应提供此流程的文档。
- 确保证书满足 AD FS 和 Web 应用程序代理 SSL 证书要求
从证书提供程序获取响应后,将其导入每个 AD FS 和 WAP 上的本地计算机存储。
在主 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 证书。
首先,需要获取新证书。 可以通过向第三方公共证书提供程序提交证书签名请求 (CSR) 来获取证书。 有多种方法可以生成 CSR,例如从 Windows 7 或更高版本的电脑生成 CSR。 供应商应提供此流程的文档。
- 确保证书满足 AD FS 和 Web 应用程序代理 TLS/SSL 证书要求。
从证书提供程序获取响应后,将其导入每个 AD FS 和 WAP 上的本地计算机存储。
在主 AD FS 服务器上,使用以下 cmdlet 安装新的 TLS/SSL 证书:
Set-AdfsAlternateTlsClientBinding -Thumbprint '<thumbprint of new cert>'
可以通过执行以下命令找到证书指纹:
dir Cert:\LocalMachine\My\
默认证书身份验证绑定和备用 TLS 绑定模式下的 TLS/SSL 证书的其他注意事项
Set-AdfsSslCertificate
和Set-AdfsAlternateTlsClientBinding
cmdlet 是多节点 cmdlet,因此它们只需从主服务器运行。 cmdlet 还会更新场中的所有节点。 此更改是 Server 2016 中的新增功能。 在 Server 2012 R2 上,必须在每个服务器上运行 cmdlet。Set-AdfsSslCertificate
和Set-AdfsAlternateTlsClientBinding
cmdlet 只需在主服务器上运行。 主服务器必须运行 Server 2016,并且应将场行为级别提高到 2016。Set-AdfsSslCertificate
和Set-AdfsAlternateTlsClientBinding
cmdlet 使用 PowerShell 远程处理来配置其他 AD FS 服务器,请确保端口 5985 (TCP) 在其他节点上处于打开状态。Set-AdfsSslCertificate
和Set-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'