我什么时候需要"谈判客户证书"要设置为启用?

时间:2018-02-28 07:47:09

标签: ssl iis iis-7.5 client-certificates ssl-client-authentication

我可选择支持客户端证书。这就是我在IIS上将Client certificates设置为Accept的原因。这适用于大多数机器。但是,在某些机器上,IIS返回500.这可以是"已解决"将Client certificates设置为Ignore(这不是我的选项)或将Negotiate Client Certificate设置为Enabled(可以使用netsh http add ...或在DefaultFlags中将HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\HTTP\Parameters\SslBindingInfo\0.0.0.0:443\更改为2;是否也可以在IIS管理器中更改?)。虽然(启用)这个设置听起来很合理,但是我不明白为什么在一些机器上需要它而不是在其他机器上需要...

1 个答案:

答案 0 :(得分:5)

<强> TL; DR

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

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

<强>描述

IIS有两种协商TLS的方法:

  • 客户端在初始请求中发送客户端证书。当服务器上的所有资源都需要TLS客户端身份验证时,这非常有用。
  • 客户端未在初始请求中发送客户端,但稍后在IIS执行TLS重新协商之后。当只有一些资源需要TLS客户端身份验证时,这很有用。

Negotiate Client Certificate设置确定使用哪个,第一个如果启用,第二个如果禁用。以下是微软的博客:

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

客户端支持和错误

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

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客户端身份验证支持。