【发布时间】:2012-11-23 22:53:35
【问题描述】:
节日,
我们希望使用 SNI 在基于云的单一 IP 解决方案上托管 SSL 网站。 .net 能否在 TLS 握手之前和通过 HTTP 确定客户端是否支持 SNI?
【问题讨论】:
标签: asp.net vb.net ssl azure sni
节日,
我们希望使用 SNI 在基于云的单一 IP 解决方案上托管 SSL 网站。 .net 能否在 TLS 握手之前和通过 HTTP 确定客户端是否支持 SNI?
【问题讨论】:
标签: asp.net vb.net ssl azure sni
不清楚您所说的“TLS 握手之前”是什么意思。
服务器名称扩展位于客户端问候消息中,这是客户端发送的第一条用于启动握手的 TLS 消息。由于 HTTPS 也总是首先建立 TLS 连接,因此之前根本没有发生任何事情。在握手之前知道客户端是否支持 SNI 是不可能的。
您也许可以在客户端使用JavaScript to try to detect SNI support 解决问题。
话虽如此,它不太可能解决您的一般问题:如果您在不支持 SNI 时拥有备用/通配符证书,那么拥有其他特定证书几乎没有意义(除了通配符证书是 not recommended);如果您期望 SNI,您将阻止不支持它的客户端。
【讨论】:
如果您查看维基百科,它会将以下内容列为 SNI 兼容。
因此,如果您在HTTP 中启动连接,那么您可以检查useragent 并检测客户端是否支持SNI,如果他们确实将它们重定向到HTTPS,如果不继续使用HTTP。
在我们的例子中,我们关心的唯一不兼容 SNI 的网络浏览器是 XP 上的 IE...
【讨论】: