首页 > 站长杂谈 > Apache关闭SSL严格域名检查(SSLStrictSNIVHostCheck),保障网站最大兼容

Apache关闭SSL严格域名检查(SSLStrictSNIVHostCheck),保障网站最大兼容

6月,我的阿里云免费空间到期了,适逢Vultr新一轮降价,索性就将阿里云免空上的网站迁到了Vultr上,自己手动搭建PHP环境太繁琐了,就选了一个一键包。文件上传完成后,在最后一步,网站接入360网站卫士时出了问题,就像下面一样:

网站卫士不支持SNI功能

网站卫士不支持SNI功能

剔除360网站卫士之后网站恢复正常,再次接入故障依旧,而且我注意到一行小字:“Reason: The client software did not provide a hostname using Server Name Indication(SNI), which is required to access this server.”中文就是说,你的客户端,也就是浏览器不支持SNI,所以被禁止访问了。由于在360网站卫士的群里,当时就反馈了问题,但是管理员说没问题,也有几个小站长随声附和。我就找到一键包作者反馈,作者也是生硬的回复我说浏览器访问正常就是没问题,有问题也是网站卫士的问题。搜了一下那段特殊的英文,貌似只在Apache 2.4版本中才会存在。重装系统,换Apache 2.2版。那段特殊的英文没有了,但是网站仍旧是403 Forbidden无法访问。没办法,裸奔吧。

这期间我就在想,以前如果浏览器不支持SNI会有一个证书错误的提示,除了会有一个小红锁(Chrome系)或地址栏变红外(IE系)外,网站还是能正常浏览的。但是这里对不支持SNI的访客直接返回403 Forbidden就显得比较激进了,这种比较激进的机制往往会有一段时间的过渡期的,过渡期当中就会有配置项来关闭这种激进的设定,然后我就在查看Apache的配置文件,首先是主配置文件httpd.conf,用的vim,能够将配置项和注释用颜色区分开,与vi相比比较容易查找配置项。查看了整个文件,没有什么特殊的,不过看到主配置文件包含了一个有关HTTPS的子配置文件httpd-ssl.conf,打开之后如下图所示:

httpd-ssl.conf配置文件内容

httpd-ssl.conf配置文件内容

好像在最后一行多了一个名叫“SSLStrictSNIVHostCheck”的配置项,以前没见过,看字面意思是“SSL严格主机名检查”。似乎现在的Apache比较激进的原因就在于此。将on改为off,重启Apache,先在Windows XP + IE 8中测试,除了证书错误,网站能够正常浏览。重新接入360网站卫士,网站访问正常。

从以上过程可以看出,360网站卫士的回源请求不能很好地支持SNI,或者根本不支持SNI,但是作为一款免费的CDN/WAF软件来说,虽兼容性稍差,但是也够用了。另一方面,SSLStrictSNIVHostCheck默认开启会造成网站兼容性下降,广大Windows XP用户无法打开网站,部分搜索引擎爬虫也无法访问网站,对收录造成影响。

综上,建议关闭SSLStrictSNIVHostCheck配置项


P.S.??一个本该在6月就解决了的问题被我拖到了现在,也真是懒癌晚期,扩散了,转移了……

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.