之前我们使用的 TLS 版本无法识别包含域名的 HTTPS 请求。当只有 IP 地址被请求时,它才能正确工作。因此,每个使用安全连接的域名都需要一个专用 IP。
从 cPanel 版本 11.38 及更高版本 开始,我们可以使用 SNI。
服务器名称指示(SNI) 是 TLS 协议的一项扩展,用于指示客户端尝试连接的主机名。
这使服务器能够在同一 IP 地址和端口号上呈现多个证书,从而允许同时存在多个安全 (HTTPS) 网站(或任何其他基于 TLS 的服务)。
但是,不幸的是,可能会出现一些问题:
SNI 与某些旧版本的网页浏览器不兼容。
- SNI 在 Windows XP + 任何版本的 Internet Explorer(6,7,8,9)上无法使用
- Internet Explorer 6 或更早版本
- Windows XP 上的 Safari
- BlackBerry 浏览器
- Windows Mobile 最高至 6.5
- Nokia 浏览器(例如 Series60 的 Symbian)
- Opera Mobile 在 Symbian 上至少是 Series60
网站仍然可以通过 HTTPS 访问,但会出现证书不匹配的错误。
解决此问题的方法: 使用不同的浏览器访问网站。此外,如果访客同意使用不兼容浏览器的其他证书,则请求的网站将正常通过 HTTPS 打开,但将使用不同的证书来建立安全连接。相反,所有使用不兼容浏览器的访问者将看到警告消息。
如果您尝试使用服务器 IP 地址获得 HTTPS 访问,可能会出现问题。
使用 IP 地址时,客户端将收到我们为每个 IP 设定的 "默认" 证书(例如 serverX.web-hosting.com),并且如果 HTTPS 请求没有指定站点名称,则将到达在此 IP 上托管的第一个站点。
*支持 SNI 的浏览器列表:
- Internet Explorer 7 或更高版本,运行在 Windows Vista 或更高版本上
- Mozilla Firefox 2.0 或更高版本
- Opera 8.0(2005 年)或更高版本(必须启用 TLS 1.1 协议)
- Opera Mobile 至少版本 10.1 beta 在 Android 上
- Google Chrome(Vista 或更高,XP 在 Chrome 6 或更高版本中,OS X 10.5.7 或更高版本在 Chrome 5.0.342.1 或更高版本中)
- Safari 3.0 或更高版本(Mac OS X 10.5.6 或更高版本和 Windows Vista 或更高版本)
- Konqueror/KDE 4.7 或更高版本
- MobileSafari 在 Apple iOS 4.0 或更高版本上
- Android 默认浏览器在 Honeycomb(v3.x)或更高版本上
- Windows Phone 7
- MicroB 在 Maemo 上
- Odyssey 在 MorphO