【问题标题】:SNI with wildcard certificate on IIS 8.5IIS 8.5 上带有通配符证书的 SNI
【发布时间】:2017-07-29 01:18:43
【问题描述】:

我在 IIS 8.5 上有一组网站,它们都使用通配符证书 (*.myhost.com),比方说:

api.myhost.com
data.myhost.com
...

现在我想为这些站点添加一个新名称,因此我获得了一个新证书 (*.newhost.com) 并在 IIS 上添加了新站点:

api.newhost.com
data.newhost.com
...

并在 IIS 中为这个新站点启用了Require Server Name Indication,但我的问题是 IIS 不断为我的新站点发送旧证书,我做错了什么以及为什么 IIS 从不在其服务器问候响应中发送 SNI 扩展?

【问题讨论】:

  • SNI 仅在客户端以正确方式请求它时才有效。我建议您使用 Wireshark 捕获 SSL/TLS 会话并仔细分析数据包以找到罪魁祸首。

标签: ssl iis iis-8.5


【解决方案1】:

可能旧站点/绑定没有启用 SNI。

检查每个站点的 *.myhost.com 绑定并启用 SNI。

如果 SNI 在那里被禁用,IP 和端口号组合将由旧证书声明。

否则,通过执行以下命令提供更多信息:

netsh http show sslcert

这将列出所有的绑定

更多背景信息:https://blogs.msdn.microsoft.com/kaushal/2012/09/04/server-name-indication-sni-with-iis-8-windows-server-2012/

更新: 检查连接,下载 OpenSSL 并使用 OpenSSL 客户端通过如下命令创建调试信息:

openssl s_client -state -debug -connect www.xyz.com:443

【讨论】:

  • 我在启用和禁用 SNI 模式下对旧站点进行了测试,并使用 netsh http show sslcert 和 powrshell cmd-let Get-WebBinding 进行了确认
  • 尝试启用调试选项的 openssl s_client(请参阅我更新的帖子)
  • 我也用openssl s_client -connect api.newhost.com:443 -tlsextdebug进行了测试,服务器从不需要SNI并为旧站点发送证书
【解决方案2】:

对于非 SNI 站点,请确保将绑定设置为“全部未分配”而不是特定 IP 地址(否则它们会妨碍 SNI 站点)。

【讨论】:

  • 这正是我们的问题!
【解决方案3】:

所有使用 ssl 的网站都必须启用 SNI。 如果只有一个站点的通配符证书未启用 SNI,这将导致所有其他证书无法使用 SNI。 找出站点是否未启用 SNI 的最简单方法是在文件“ApplicationHost.config”(位于 windir/system32/inetsrv/config)中查找。在站点部分中列出了所有绑定,并且应该具有“1”的 sslFlags-Attributes。任何站点都不得具有以下属性:sslFlags="0"。用“0”标志识别站点后,您可以在 IIS 管理控制台中为这些站点激活 SNI 标志。

【讨论】:

    猜你喜欢
    • 2017-01-17
    • 2012-03-01
    • 1970-01-01
    • 2012-03-30
    • 2016-08-13
    • 1970-01-01
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    相关资源
    最近更新 更多