检测浏览器的SNI支持

Ger*_*rry 8 javascript php ssl sni

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

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

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

Tod*_*ses 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证书失败后执行某些操作为时已晚.