博学笃行·盛德日新

都2019了,领导还要https支持xp下的ie浏览器


技术

下了班,正哈皮哈皮的吃着蛋炒饭,领导在钉钉里就是给你一个截图,只得立马放下正在吃的饭,拿起吃饭的家伙,开始查原因。

c-1

emmm,貌似是https的问题,会不会是我证书配置错误了呢?赶紧用自己的浏览器打开网址,可以打开呀。好的,我再用命令行打开一下看,还是没有问题呢?
赶紧回复,没有问题,我这里一切正常。

会不会是操作系统的问题,会不会是浏览器的问题?然后又问领导要操作系统和浏览器信息。
windows xp!!! xp!!! xp!!! IE 8!!!! IE 8!!!!IE 8!!!!

额,问题确定了,就是xp的问题,就是ie的问题,直接回复领导:“https不支持xp,不支持ie。”
然后搜索了几篇文章,比如 https://support.microsoft.com/zh-tw/help/813444/you-cannot-log-in-to-or-connect-to-secured-web-sites-in-internet-explo 让用户那边进行操作一下,看能不能访问。
万事大吉,立刻开吃。

Ding~, 又一条钉钉消息,piapiapia,知道可能要打脸了。
要用户操作的话,肯定不是我们解决问题的方式和方法.

其实我的内心OS是,现在还有谁在用windows xp呀,为了这么点用户值得么(冷静下来后想想,这么点用户到底是多少用户呢?有统计过么?)?xp都不支持sha256算法呀,而我们的证书就是sha256的,低版本的加密算法又被证明并不安全。
不想碰windows,不想碰xp,更不想碰ie!
怎么办,能怎么办,我也不知道怎么办。既然xp不支持sha256算法,而我们的证书是sha256算法的,那应该就是这个原因了吧,赶紧给领导解释。

Ding~,又一个截图,piapiapia,这下又打脸了。 百度也是https,怎么可以用ie打开呢?淘宝也是https,怎么可以打开呢?百度的就是sha256算法。

c-2

看到那个ov,像是救命稻草一样,只想着赶紧把这个事情给完结了。先暂时这么假设吧。
当然咯,我们也不能就这样轻易的放过自己,凭啥你百度可以https,我不行呢?百度怎么实现的呢?哎呀,头痛头痛,先吃了饭,回家再研究。

百度搜百度为啥可以windows xp使用https,百度根本就不会告诉你,哈哈哈哈呜呜呜呜😂😂。,还得问问谷歌。

一开始搜索到这篇文章: https://www.it68.com.cn/2015/08/06/nginx-ssl-sha256-support-xp-ie-and-ie7/ , 但是只是告诉我们

xp下的IE6和IE7不支持SNI,IE6/IE7不认SHA256证书只认SHA1证书, 而且不会对SHA1证书出任何警告

对我解决现在当前的问题,并没有什么帮助。

继续查找: http://blog.sina.com.cn/s/blog_53b91ff30102wsya.html , , 问题和我遇到的几乎一模一样呀,感觉找到了救星。赶紧在一台服务器上进行测试,加上如下配置:

    ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:DHE-RSA-AES128-GCM-SHA256:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4"; 

还是打不开呀,沮丧到极点,喝口水,洗个澡。

休息够了,继续未尽之事业。
查了几篇文章,还只有这篇文章比较靠谱,再仔细看一篇。检查了IE的高级安全配置,配置都是正常的。 那只能看看他的参考啦: https://ablagoev.github.io/ssl/nginx/ie8/winxp/cipher/2016/12/23/ie8-winxp-nginx-ssl.html
看了这篇文章算是有点懂了,就是客户端的加密方式和服务端的加密方式是不是配套的问题,客户端的加密方法可能在我的服务端(Nginx)根本不支持这种方式进行解密了。重新编译nginx,编译的时候,加上 --with-openssl=./openssl-1.1.0j --with-openssl-opt=enable-weak-ssl-ciphers。 进行测试,一切都变得那么顺畅了,在ie8上能进行访问了。

我在自己的服务器搞定了,但是这个域名是上了CDN的,CDN那边还是不支持IE8呀。不管怎样,先给领导汇报一下吧。 本来是怀着解决问题激动,但是领导又是一盆冷水淋到头上,怎么确定CDN那边不支持,和他们确认了么?

赶紧找阿里云和网宿确认
- 阿里云的回复:

工程师 xxxx 号 :    您好,CDN的https协议是通过SNI技术实现的,因此在部分低版本的系统的低版本的操作系统会出现无法兼容的情况导致SSL校验失败的情况,该问题确实不好解决,现在仅能够升级客户端的操作系统或者浏览器版本解决该问题。
附:SNI技术对于浏览器的兼容情况:https://www.ssllabs.com/ssltest/clients.html  
  • 网宿的回复: c-3

优秀的领导总是逼自己的下属成长,咦,好好的一篇檄文,怎么就变成了马屁文了?
还真不是哦,优秀的人总是能从更优秀的人那里学到更多的东西,让自己变得更优秀。

从这个过程中,我学到了什么?

  1. 明白自己的目的:
    领导可能没有我们懂得的那么多的技术细节,但是他们明白自己要的是什么。

  2. 反向思考的能力:
    别人为什么能做到?

  3. 思考解决问题的各种方式:
    这个方式解决不了,那还有其他的方式么?

  4. 学到了更多关于ssl的知识:
    好的领导,就是让自己的下属更好的成长的领导。

其实还想请教请教,怎么解决IE6和IE7的访问呢?有知道的么?没找到哪个机构还在颁发sha1的证书了,服务端是不是也要做什么配置呢?

评论