IIS 证书仍绑定到外部 IP

IIS 证书仍绑定到外部 IP

我将所有主机明确设置为绑定到同一个 IP。显然这很糟糕。我也没有打开 SNI。

因此,IIS 颁发了错误的证书。 def.com正在获取证书abc.com。可能是因为我首先将其直接绑定到 IP。

netsh show sslcert

IP:port                      : 123.123.123.123:443
Certificate Hash             : <HashA>
//...

IP:port                      : abc.com:443
Certificate Hash             : <HashA>
//...

IP:port                      : def.com:443
Certificate Hash             : <HashB>
//...

这可能很简单,但是我还太年轻。

$ curl abc.com
200
test

$ curl def.com
curl refused.  Certificate is for abc.com

答案1

如果您没有启用 SNI,HTTP 服务器会查看Host:HTTP 标头来确定该连接针对的是哪个虚拟主机。

abc.com如果您通过 HTTPS 连接,服务器将无法看到该标头:它需要先解密请求,但在解密之前,服务器必须识别自己,并且在这种情况下,它别无选择,只能猜测默认主机名。

这是一个无法逃避的问题,启用 SNI 就是解决方案。

答案2

我已经弄清楚了问题所在,虽然这很愚蠢,但我对于 IP 绑定的看法绝对是 100% 正确的。

同一服务器上的其他网站也有人直接将 IP 地址绑定到该地址。纠正这些问题后,系统netsh show sslcert突然不再显示与证书绑定的 IP 地址,我马上就知道这招管用了,结果确实管用。

确保所有共享 IP 的 SSL 站点都启用 SNI 也非常重要。

感谢大家。

相关内容