本文最后更新于 2748 天前,其中的信息可能已经有所发展或是发生改变。
公司网站在部分电脑的 IE 内核浏览器上打不开。无法显示此网页。
在 chrome 和 firefox 上可正常打开。说明端口是正常的。
一开始以为服务端的动态网页判断了浏览器 UA 准备对 IE 浏览器特殊处理,处理时存在 BUG 导致触发异常断开连接。
在正常打开网页的情况看返回的 http 头部,发现服务器是 Nginx。讲道理如果是触发了异常最容易发生 Nginx 的常见错误 “500 Internal Server Error”。
此时猜想可能是禁掉了 Nginx 的错误页面。
在 IE 上抓包发现,并没有返回数据。观察到网站采用了 https 协议。怀疑是 SSL 握手失败导致的。
莫名奇妙。。开始分析。。
用 Chrome 打开网页检查证书。任何一项不正常浏览器会主动提示并阻止打开网页的,此时奇葩问题还是手动检查了一下 = =
检查证书有效期,正常。
检查证书链,正常。
检查证书和证书颁发机构是否被信任,正常。
甚至检查了证书算法,正常。
于是我把服务器砸了,然后就被辞退了。
好了我高超的技术被领导们看中又被请回来了。
在检查通信协议的时候 TLS1.2 。想着应该不会啊。。就算 IE8 不支持 TLS1.2 。难道 IE11也不支持么。部分电脑 IE11 能打开这个说不过去。
我还是检查了一下 IE 设置。神TM为什么不勾上 TLS1.2 ???
解决方案:
上策:勾上
当然不可能让所有客户都勾上才能访问网页。
下策:那么就在服务器上做兼容。
Nginx配置:
[code]ssl_protocols TLSv1 TLSv1.1 TLSv1.2;[/code]