我花了一段时间才找到这个元数据库设置。我们的客户使用新的 certicom 库时遇到了同样的问题。自从发现围绕 SSL 重新协商的 MITM 攻击以来,很多圈子的答案都是挂断重新协商请求。
从 \inetpub\adminscripts 运行以下 cmd 将强制 IIS 始终请求客户端证书。
对于 IIS 6:cscript adsutil.vbs 设置 \w3svc\siteID\SSLAlwaysNegoClientCert True
(所以对于默认网站,cscript adsutil.vbs set \w3svc\1\SSLAlwaysNegoClientCert True)
请记住,某些客户端Internet Explorer在收到该数据包时会提示输入客户端证书,无论是否需要客户端证书。
对于 IIS 7:
将以下文本保存到名为“Enable_SSL_Renegotiate_Workaround.js”的文件中
var vdirObj=GetObject("IIS://localhost/W3svc/1");
// replace 1 on this line with the number of the web site you wish to configure
WScript.Echo("Value of SSLAlwaysNegoClientCert Before: " + vdirObj.SSLAlwaysNegoClientCert);
vdirObj.Put("SSLAlwaysNegoClientCert", true);
vdirObj.SetInfo();
WScript.Echo("Value of SSLAlwaysNegoClientCert After: " + vdirObj.SSLAlwaysNegoClientCert);
从提升的/管理员命令提示符运行以下命令:
cscript.exe enable_ssl_renegotiate_workaround.js
(从 977377 的知识库文章中提取)