AD FS 对证书身份验证的备用主机名绑定的支持

适用于:Windows Server 2016 及更高版本

在许多网络上,本地防火墙策略可能不允许流量通过非标准端口(例如 49443)。 尝试在 Windows Server 2016 之前使用 AD FS 完成证书身份验证时,非标准端口创建了问题,因为无法在同一主机上使用不同的绑定进行设备身份验证和用户证书身份验证。 在 Windows Server 2016 之前,默认端口 443 被绑定用来接收设备证书,并且不能被更改为支持同一通道中的多个绑定。 智能卡身份验证不起作用,并且没有向用户说明原因的通知。

Windows Server 中的 AD FS 支持备用主机名绑定

Windows Server 中的 AD FS 提供对备用主机名绑定的支持。 支持两种模式。 第一种模式使用具有不同端口(443、49443)的同一主机(即 adfs.contoso.com)。 第二种模式使用具有相同端口 (443) 的不同主机(adfs.contoso.com 和 certauth.adfs.contoso.com)。 第二种模式需要一个 TLS/SSL 证书来支持将“certauth.<adfs-service-name>”用作备用使用者名称。 可以在创建场时或稍后通过 PowerShell 来配置备用主机名绑定。

如何为证书身份验证配置备用主机名绑定

可以使用两种方法来添加用于证书身份验证的备用主机名绑定。

  • 使用 Windows Server 2016 的 AD FS 设置新的 AD FS 场时,如果证书包含使用者可选名称 (SAN),则它将自动设置为使用前面部分中提到的第二种模式。 这意味着它将自动设置使用同一端口的两个不同主机(sts.contoso.com 和 certauth.sts.contoso.com)。

如果证书未包含 SAN,则你会看到一条警告,指出你的证书使用者可选名称不支持 certauth.*。 请参阅以下屏幕截图。 第一张屏幕截图显示了证书包含 SAN 时的安装。 第二张屏幕截图显示了不包含 SAN 的证书。

Screenshot that shows an installation where the certificate contains a SAN.

Screenshot that shows a certificate that doesn't contain a SAN.

  • 在部署 Windows Server 中的 AD FS 后,可以使用 PowerShell cmdlet Set-AdfsAlternateTlsClientBinding 添加用于证书身份验证的备用主机名绑定。 有关详细信息,请参阅 Set-AdfsAlternateTlsClientBinding
Set-AdfsAlternateTlsClientBinding -Member ADFS1.contoso.com -Thumbprint '<thumbprint of cert>'

出现提示时,选择“是”进行确认。

alternate hostname binding