8

我想知道除了验证用户代理和猜测之外,是否有任何方法可以确定发出 HTTP 请求的浏览器是否支持 SNI。

我会考虑服务器或客户端选项。

我想做的是为指向同一个 PHP 应用程序的多个域设置 SSL 证书。然后我会尝试找出发出请求的客户端是否支持 SNI,如果支持,则将他重定向到启用 SSL 的版本。

4

1 回答 1

5

首先,我们知道目前支持 SNI 的浏览器:

歌剧 8.0; MSIE 7.0(但仅适用于 Windows Vista 或更高版本);Firefox 2.0 和其他使用 Mozilla Platform rv:1.8.1 的浏览器;Safari 3.2.1(Windows 版本支持 Vista 或更高版本的 SNI);Chrome(Windows 版本也支持 Vista 或更高版本的 SNI)。

所以一个便宜的方法是确定浏览器,如果它是上述之一,它有 SNI。

虽然这不是最佳实践(优先于特征检测),但似乎没有办法避免它,因为 SNI 检测需要 SSL 握手。因此,在您的 SSL 证书失败后做某事为时已晚。

于 2011-09-09T16:46:40.467 回答