什么时候需要将“协商客户端证书”设置为“已启用”?

Dun*_*ken 5 iis ssl client-certificates iis-7.5 ssl-client-authentication

我可以选择支持客户证书。这就是为什么我设置Client certificatesAcceptIIS上。这适用于大多数计算机。但是,在某些计算机上,IIS返回500。可以通过设置Client certificatesIgnore(不是我的选择)或通过设置Negotiate Client CertificateEnabled(可以通过将in netsh http add ...更改DefaultFlags为2来解决)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslBindingInfo\0.0.0.0:443\。在IIS管理器中进行更改?)。虽然(启用)此设置听起来很合理,但仅看名字我就不明白为什么在某些机器上需要它,但在其他机器上不需要...

Gro*_*ify 5

TL; DR

如果需要客户端证书来访问服务器上的任何资源,则可以一直启用。主要原因是某些客户端由于可能的中间人(MITM)攻击而不允许TLS重新协商。

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

描述

IIS有两种协商TLS的方法:

  • 客户端在初始请求中发送客户端证书的位置。当服务器上的所有资源都需要TLS客户端身份验证时,此功能很有用。
  • 客户端不在初始请求中发送客户端,而是在IIS执行TLS重新协商之后发送的客户端。当仅某些资源需要TLS客户端身份验证时,此功能很有用。

Negotiate Client Certificate设置确定使用哪个,第一个(如果启用)和第二个(禁用)。这里是微软博客的更多内容:

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

客户支持和错误

问题是某些客户端没有重新协商TLS会话。如果客户端不这样做,则服务器日志中可能会遇到以下错误。设置Negotiate Client CertificateEnabled可以解决此问题。

The following fatal alert was generated: 20. The internal error state is 960.

TLS重新协商MITM攻击

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

自从发现MITM攻击围绕SSL重新协商以来,很多人的答案一直是放弃重新协商请求。

Negotiate Client Certificate可能需要这样做的客户端可以在TLS重新协商期间防止MITM攻击。

摘要

如果您没有问题要求所有IIS资源都具有客户端证书,则启用此功能可能使您可以与更多客户端进行互操作,并进一步保护流量。

在了解MITM风险的同时,请禁用此功能以支持差异TLS客户端身份验证支持。