【问题标题】:TLS mutual authentication in IIS without renegotiationIIS 中的 TLS 相互身份验证,无需重新协商
【发布时间】:2013-04-02 09:57:06
【问题描述】:

我正在托管一个网络应用程序,该应用程序使用 TLS 和双向(双向)身份验证来进行所有连接。我的 Web 应用程序在 Windows Server 2012 上使用 IIS 8 托管,并且在 IIS 中配置为需要 SSL 并且还需要客户端证书。当我从浏览器访问网络应用程序时,系统会提示我输入证书,一切似乎都很好。

但是,当我查看数据包捕获时,我看到 TLS 会话以单向身份验证会话开始,然后发送请求,然后将会话重新协商为 2 向身份验证会话,然后响应在这个 2-way 认证会话中发送。

这是不可接受的,原因如下:

  1. 请求未通过 2 路经过身份验证的 TLS 连接发送。
  2. 这会无缘无故地添加额外的 TLS 会话协商。
  3. 很难验证是否使用了 2 向身份验证,因为经过 2 向身份验证的握手消息在初始的 1 向身份验证会话中进行了加密
  4. 除非您正确执行,否则 TLS 会话重新协商存在与之相关的安全漏洞。

我的猜测是 IIS 在应用适当的 SSL 设置之前需要知道您尝试访问的站点,因此它以“默认”单向身份验证会话开始,并在收到请求后确定它需要使用2路身份验证。由于我在 IIS 上托管的所有内容都需要双向身份验证,因此我希望这是“默认”行为。是否有某种方法可以对 Web 应用程序进行编码或将 IIS(或 Windows Server 2012)配置为始终以 2 路身份验证的 TLS 会话开始?

【问题讨论】:

  • 感谢您发布此信息!

标签: windows iis ssl


【解决方案1】:

http://technet.microsoft.com/en-us/security/bulletin/MS10-049 找到答案。它没有列出 IIS 8,但 IIS 7 的修复似乎有效:

对于 IIS 7:

将以下文本保存到名为Enable_SSL_Renegotiate_Workaround.js的文件中

// replace 1 on this line with the number of the web site you wish to configure
var vdirObj=GetObject("IIS://localhost/W3svc/1");

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

【讨论】:

  • 感谢您发布答案。我们在这个问题上苦苦挣扎了几天。正在考虑需要打电话给微软。我在下面发布了一个替代解决方案。
【解决方案2】:

juhraffe 的回答确实有效,但也让我发现了一个看起来更干净的以下解决方案。

在我们的部署过程中,我们使用网络配置实用程序将证书绑定到端口

netsh http add sslcert ipport=0.0.0.0:443 certhash=f882031933dc66a88993d5b5c326ed21b2ea8779 appid={4dc3e166-e14b-4a21-b022-59fc669b0914} 

显然可以添加一个额外的标志,可以达到与 juhraffe 的解决方案中描述的相同的效果

这就是我们修改命令的方式

netsh http add sslcert ipport=0.0.0.0:443 certhash=f882031933dc66a88993d5b5c326ed21b2ea8779 appid={4dc3e166-e14b-4a21-b022-59fc669b0914} clientcertnegotiation=enable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-01
    相关资源
    最近更新 更多