3

节日,

我们希望使用 SNI 在基于云的单一 IP 解决方案上托管 SSL 网站。.net 能否在 TLS 握手之前和通过 HTTP 确定客户端是否支持 SNI?

4

2 回答 2

0

If you look at wikipedia it lists the following as SNI compatible.

  • Internet Explorer 7 or later, on Windows Vista or higher. Not in any Internet Explorer version on Windows XP because SNI depends upon the SChannel system component shipped with Windows Vista.
  • Mozilla Firefox 2.0 or later
  • Opera 8.0 (2005) or later (the TLS 1.1 protocol must be enabled)
  • Opera Mobile at least version 10.1 beta on Android
  • Google Chrome (Vista or higher. XP on Chrome 6 or newer.
  • OS X 10.5.7 or higher on Chrome 5.0.342.1 or newer)
  • Safari 3.0 or later (Mac OS X 10.5.6 or higher and Windows Vista or higher)
  • Konqueror/KDE 4.7 or later
  • MobileSafari in Apple iOS 4.0 or later
  • Android default browser on Honeycomb (v3.x) or newer
  • BlackBerry 10 and BlackBerry Tablet OS default browser
  • Windows Phone 7 or later
  • MicroB on Maemo
  • Odyssey on MorphOS

So if you start the connection in HTTP then you can check the useragent and detect if the client supports SNI and if they do redirect them to HTTPS if not keep them on HTTP.

In our case the only web browser that we care about that ain't SNI compatible is IE on XP...

于 2014-12-19T08:53:51.277 回答
0

目前尚不清楚“在 TLS 握手之前”是什么意思。

服务器名称扩展位于客户端问候消息中,这是客户端发送的第一条 TLS 消息以启动握手。由于 HTTPS 也总是首先建立 TLS 连接,因此之前根本没有发生任何事情。在握手之前知道客户端是否支持 SNI 是不可能的。

您也许可以在客户端解决一些问题,使用JavaScript 来尝试检测 SNI 支持

话虽如此,它不太可能解决您的一般问题:如果您在不支持 SNI 时拥有备用/通配符证书,那么拥有其他特定证书几乎没有意义(除了不推荐使用通配符证书的事实);如果您期望 SNI,您将阻止不支持它的客户端。

于 2012-11-26T09:38:05.463 回答