在 Windows Server 2008 R2 上的 IIS7 中分配 SSL 证书

在 Windows Server 2008 R2 上的 IIS7 中分配 SSL 证书

我们想要在 IIS 服务器上有两个 SSL 站点。我使用 IIS 生成了一个自签名 SSL 证书 https://Django.mycompanyname.com:443

然而我们也需要https://site2.Django.mycompanyname.com:443在同一台服务器上。

如果不购买通配符 SSL 证书,可以实现这一点吗?

答案1

从技术上来说,这是可能的——它被称为服务器名称指示

支持此功能的第一个 IIS 版本是 IIS 8.0(请参阅这里

对于您来说,您需要将服务器至少更新到 Server 2012 或使用能够提供此功能的反向代理。

我建议使用 nginx 作为反向代理 - 它提供了额外的功能,例如 HTTP2 支持和所服务内容的整体性能改进(nginx 在传输方面也做了一些相当不错的优化)


简单解释一下这里实际发生的情况:

使用 SNI 时,加密连接的协商方式会有所修改,即客户端在连接开始时发送请求的主机名 - 因此较旧的客户端不支持此方式。收到请求的主机名后,服务器可以决定将哪个证书交给客户端(正确设置证书时,证书与请求的主机名匹配)。

如果服务器不提供此机制,则每个侦听器只有一个证书可用,并且此证书将分发给任何连接的客户端。因此,单个端点(由 IP:Port 定义)只能使用一个证书进行响应(和/或绑定到一个主机名)。

IIS7 不提供 SNI 功能。

这导致需要包含所有请求/服务的主机名的证书(由于主机数量/客户不同,这可能无法实现)或每个提供的 SSL/TLS 端点的唯一绑定(IP:端口)。

相关内容