知识库

SNI 技术

之前我们使用的 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