何时需要设置“启用协商客户端证书”?

8
我希望支持客户端证书。因此我在 IIS 中将“客户端证书”设置为“接受”。这在大多数计算机上都可以正常工作。然而,在某些计算机上,IIS 会返回错误代码 500。有两种方法可以“解决”这个问题:一种是将“客户端证书”设置为“忽略”(但对我来说不是一个选项),另一种是将“协商客户端证书”设置为“启用”(可以使用“netsh http add...”或通过更改注册表项“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslBindingInfo\0.0.0.0:443\”中的“DefaultFlags”为2进行设置;这是否也可以在 IIS 管理器中更改?)。虽然(启用)此设置听起来合理,但我不明白为什么在某些机器上需要它而在其他机器上不需要...
1个回答

15

TL;DR

如果需要客户端证书访问服务器上的任何资源,则可以始终启用此功能。主要原因是,一些客户端不允许 TLS 重新协商,因为可能会发生中间人攻击(MITM)。

如果您的客户端支持 TLS 重新协商并且 MITM 风险可接受,则可以禁用此功能。

Description

IIS 有两种方式来协商 TLS:

  • 客户端在初始请求中发送客户端证书。当服务器上的所有资源都需要 TLS 客户端身份验证时,这很有用。
  • 客户端在初始请求中不发送客户端,在 IIS 执行 TLS 重新协商后再发送客户端。当只有部分资源需要 TLS 客户端身份验证时,这很有用。

Negotiate Client Certificate 设置确定使用哪个选项,如果启用,则使用第一个选项,如果禁用,则使用第二个选项。以下是来自 Microsoft 博客的更多信息:

  • 如果启用此设置,则在与 Web 服务器协商初始安全连接时,客户端浏览器将发送客户端证书。
  • 如果禁用,则将基于服务器证书在 Web 服务器和浏览器之间协商初始安全连接,然后在客户端发送客户端证书时重新协商连接。

客户支持和错误

问题在于一些客户端没有重新协商TLS会话。如果客户端未执行此操作,则服务器日志中可能会出现以下错误。将协商客户端证书设置为启用即可解决此问题。

生成了以下致命警报:20。内部错误状态为960。

TLS 重新协商 MITM 攻击

一些客户端不再重新协商 TLS 连接的原因是由于与 TLS 重新协商相关的中间人攻击(MITM):

自从发现了 SSL 重新协商的 MITM 攻击以来,在很多领域的答案都是挂断重新协商请求。

要求“协商客户端证书”的客户端可能会这样做,以防止在 TLS 重新协商期间出现 MITM 攻击。

摘要

如果您对于 IIS 资源需要客户端证书没有问题,启用此功能可能允许您与更多客户端互操作,并进一步保护您的流量。

禁用此选项以支持差异化的TLS客户端认证,同时了解中间人攻击的风险。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接