Joh*_*unt 5 ssl sni apache-2.2
我们有一个带有几个互联网 IP 的网络服务器。
我已经成功设置了基于 SNI 名称的虚拟主机,它运行良好。我想做的是让我们的主站点不使用 SNI 并单独使用唯一的 IP 地址之一,以便改进我们对该站点的浏览器支持(XP/IE 组合..)
我们运行着一个非常受欢迎的网站,该网站有大量用户在运行严重过时的浏览器,因此这对我们来说非常重要。
在 CentOS 6 上运行 Apache 2.2 (2.2.15-47.el6_7)。
正如其他人所说,只需将第一个站点作为第一个虚拟主机,无论是否启用 SNI,它都可以工作:
<VirtualHost *:443>
ServerName www.site1.com
DocumentRoot /site1/
SSLCertificateKeyFile /ssl/server1.key
SSLCertificateFile /ssl/server1.crt
</VirtualHost>
<VirtualHost *:443>
ServerName www.site2.com
DocumentRoot /site2/
SSLCertificateKeyFile /ssl/server2.key
SSLCertificateFile /ssl/server2.crt
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
然而,站点 2 的非 SNI 浏览器将提供站点 1 的证书,因此会出错(用户可能想知道为什么他们获得了不同站点的证书,但如果仍在非 SNI 浏览器上,他们可能不是那个技术娴熟)。
但是,尽管存在明显的 SNI 问题,但如果您拥有涵盖所有站点主题备用名称字段的单个证书,则可以为所有站点的所有用户提供访问权限。
然后,您可以使用相同的密钥和证书拥有两个虚拟主机:
<VirtualHost *:443>
ServerName www.site1.com
DocumentRoot /site1/
SSLCertificateKeyFile /ssl/server.key
SSLCertificateFile /ssl/server.crt
</VirtualHost>
<VirtualHost *:443>
ServerName www.site2.com
DocumentRoot /site2/
SSLCertificateKeyFile /ssl/server.key
SSLCertificateFile /ssl/server.crt
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
因此,您对两个站点(或三个或更多,如果需要)拥有相同的密钥和证书。
因此,即使没有 SNI 支持,www.site1.com 也始终作为默认主机运行。
对于 www.site2.com,它变得更有趣:
所以这是有效的,因为 https 连接涉及两个不同且不相关的步骤:1) 进行 SSL 协商和 2) 使用该 SSL 连接请求文档,并且这两个步骤不必来自同一个虚拟主机(尽管大多数人认为它确实如此) )。
此选项的主要缺点是,根据网站的关联程度,在同一证书上使用两个不同的 URL 可能看起来不专业。但是,大概如果他们共享一个主机,他们是有些相关的业务(除非服务器归托管公司所有),所以这可能不是问题。
我发现这是一个方便的小解决方法,特别是对于我可能希望在一个 IP 地址上托管多个站点的开发服务器,我在主题备用名称字段中使用带有多个 URL 的自签名美分。
| 归档时间: |
|
| 查看次数: |
10265 次 |
| 最近记录: |