我何时需要将协商客户端证书设置为启用(&Q;;)? [英] When do I need "Negotiate Client Certificate" to be set to Enabled?
本文介绍了我何时需要将协商客户端证书设置为启用(&Q;;)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Client certificates
设置为Accept
的原因。这在大多数机器上都有效。但是,在某些计算机上,IIS返回500。这可以通过将Client certificates
设置为Ignore
(这对我来说不是一个选项)或通过将Negotiate Client Certificate
设置为Enabled
(这可以使用netsh http add ...
来完成,或者通过在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesHTTPParametersSslBindingInfo .0.0.0:443
中将DefaultFlags
更改为2;这也可以在IIS管理器中更改吗?)来"解决"。虽然(启用)此设置仅从名称来看听起来很合理,但我不明白为什么在一些计算机上需要它,而在另一些计算机上不需要它...
推荐答案
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)攻击:
自从发现围绕SSL重新协商的MITM攻击以来,很多圈子的答案都是挂起重新协商请求。
- Make IIS require SSL client certificate during initial handshake
- http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.156.4428&rep=rep1&type=pdf
- https://security.stackexchange.com/questions/63867/ssl-tls-renegotiation-handshakes-mitm-plaintext-data-injection-medium-or-low
需要Negotiate Client Certificate
的客户端可能会在TLS重新协商期间阻止MITM攻击。
摘要
如果您不需要所有IIS资源的客户端证书,则启用此功能可能允许您与更多客户端进行互操作,并使您能够进一步保护您的通信。
禁用此选项可支持不同的TLS客户端身份验证支持,同时了解MITM风险。
这篇关于我何时需要将协商客户端证书设置为启用(&Q;;)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文