本文介绍如何将新的 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 应用程序代理 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 证书,如以下步骤所示:
首先,需要获取新证书。 可以通过将证书签名请求(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 执行用户证书身份验证。 用户证书主机名是 AD FS 主机名前面加上 certauth
,例如 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'