检测浏览器的SNI支持

时间:2011-09-09 15:25:30

标签: php javascript ssl sni

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

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

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

1 个答案:

答案 0 :(得分:5)

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

Opera 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证书失败后做某事已经太迟了。