一个HTTPS问题的排查,谁的锅?

  • 时间:
  • 浏览:111

某日临近下班的事先,收到三个小 多用户可以了打开企业邮箱页面的投诉,最终发现是 HTTPS 的问题 ,这篇文章完正记录了除理过程,除理投诉后,我也在思考问题 产生的原因。

收到投诉后,一群人儿儿的运维同事使用 QQ 远程连接用户桌面(最有效、最快速的问题 排查手段)的功能了解具体的情况汇报,初步情况汇报如下:

  • Chrome 打开企业邮箱官网(https://mail.sina.net)越来越问题 。
  • 登录 webmail(https://webmail.sina.net)后页面空白。

运维同事使用 Chrome 开发者工具发现 webmail 页面(该页面可以正常输出数据)引入的静态元素(js、css)无法加载,将某三个小 多 js 文件(i0.sinaimg.cn 域名)单独在 Chrome 中打开,页面冒出 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 错误。

事先有些同学奇怪,为那此 js 文件打不开就冒出空白页面?这和一群人儿儿的前端开发架构有关,页面的渲染极度依赖 js,事先 js 无法加载整个页面就无法呈现。

就看 ERR_SSL_VERSION_OR_CIPHER_MISMATCH 错误,我第一反应是服务器 https 配置兼容性不好事先客户端(Chrome)https 配置支持缺乏。考虑到可以了个别用户投诉,再上加我原来就知道邮箱 https 配置兼容性非常广(支持 tls 1.0、tls 1.1、tls 1.2),越来越来越多重点怀疑客户端 https 的问题 。

进一步排查发现用户的 Chrome 版本是 36,潜意识认为是用户浏览器版本缺乏的问题 ,做了三个小 多检查:

(1)查看该 Chrome 版本是什么时间发布

通过上图看出 2014 年发布的,越来越来越多算太旧。

(2)查看该 Chrome 版本 https 支持的最高版本

通过 SSL Labs User Agent Capabilities 工具(https://www.ssllabs.com/ssltest/clients.html)检测结果如下:

通过上图看出该版本最高支持 tls 1.2,不发生 https 版本配置缺乏的问题 。

既然从理论上排除了 Chrome 兼容性问题 ,让他使用 Chrome 开发者工具【Security】菜单查看具体的 https 报错信息,悲催的是 chrome 36 版本居然越来越【Security】菜单。。。最好的排查工具无法使用了,该版本的开发者工具如下图:

此时我抓瞎了,继续思考,三个小 多新的问题 进入脑子:

(1)webmail 330 浏览器可以正常访问,IE、Chrome 无法访问,我我着实你你这一 条信息干扰性极大,让他怀疑还是客户端兼容性的问题 。

事先都不 我远程连接用户桌面,越来越来越多当时也越来越查看(也没想到) 330 开发者工具的调试信息,这是非常可惜的有些。

(2)Chrome 访问企业邮箱官网越来越问题 ,这我我着实是非常重要的二根信息,事先是客户端(IE、Chrome)问题 ,为什么在么在在么在官网 https 访问越来越问题 ,我打开开发者工具就看一下,发现官网引入的 js 元素域名是 www.sinaimg.cn。

问题 逐步清晰了,官网和 webmail 引入的 js 元素域名是不一样的,一群人儿儿公司所有的静态元素都部署在自有 CDN 上(事后才知道也引入了阿里云 CDN),不是你你这一 个 多域名配置的证书以及 HTTPS 配置不一样?我着实本就知道公司证书都不 SAN 泛域名证书,所有的域名以及子域名都使用同一张证书,但从严谨的高度考虑,我还是使用SSL Labs SSL Server Test 工具(https://www.ssllabs.com/ssltest/analyze.html)测试 https 配置情况汇报。

你你这一 工具会扫描对应域名所有的 IP,因此显示该 IP 下的证书、HTTPS 配置的情况汇报汇报,测试 www.sinaimg.cn 结果如下:

通过上图可见整个配置检测越来越问题 。接着测试 i0.sinaimg.cn,结果如下:

冒出上图的的原因越来越来越多 CDN 的某个点的 https 配置(443端口)无法获取到,工具中止了检测。

此时问题 逐步清晰了,公司静态池(静态元素)CDN 部署了越来越来越多点,不是某个点 https 配置有问题 ?CDN 由公司专门团队维护,立刻向一群人儿反馈,五分钟后问题 除理。

得到的反馈越来越来越多静态池也使用了阿里云的 CDN(最近刚加的点,投诉用户正好访问了你你这一 CDN 点),而你你这一 CDN 点居然越来越配置支持 https。。。

CDN 同事在阿里云开启 443 https 服务(主要工作是上传 i0.sinaimg.cn 证书)后就除理了问题 ,一群人儿儿不禁要追问为什么在儿 点那此越来越 https 部署,一群人儿的解释是越来越接到你你这一 点要支持 https 的需求。。。

对于你你这一 理由,越来越来越多我还是当年年少轻狂的我,估计要喷一群人儿了(现在能不可以了心里喷了),静态池服务早就宣称全站支持 HTTPS 了,为什么在么在在么在还有这问题 ?CDN 配置是开发人员无法也越来越多再知道的(完正透明),既然全站 HTTPS 了,新增加三个小 多点是都不 应该也要支持?为什么在么在在么在能说越来越接收到需求呢?我渣浪的甩锅作风还是一如既往。

有些同学不禁要问,越来越大的故障,为什么在么在在么在别的产品不受影响呢?原因就在于 i0.sinaimg.cn 你你这一 域名下的服务使用者事先很少,下一阶段一群人儿儿要尽快将静态元素迁移到 www.sinaimg.cn 域名上。

除理该问题 后,我冷静下来思考,为什么在么在在么在 330 浏览器越来越问题 ?同一台机器 DNS 解析难道都不 一样的吗?330 连接的 443 服务器难道和 Chrome 连接的 443 服务器不一致?事先不一致,越来越 330 浏览器显示正常是可以理解的,事先一致,那就比较慢解释了。

事先当时越来越就看 330 浏览器访问的情况汇报汇报,越来越来越多我做了三个小 多测试:

  • (1)登录阿里云 CDN 控制台,默认 443 端口是关闭的,也越来越来越多说故障发生的事先,443 肯定越来越开启。
  • (2)事先我越来越阿里云 CDN 服务,越来越来越多做了个模拟,用我本人的服务器测试 https://www.simplehttps.com(30 打开,443 关闭),看看 330 浏览器是怎样运行的

最终使用 330 浏览器访问该网址,可以了成功打开,越来越来越多这成了三个小 多悬案了。

通过这件事情,得到的有些体会和想法:

  • 排查问题 是前要经验的,经验基于技能的掌握程度,冷静的头脑,熟练借助工具。
  • 越来越来越多问题 看上去很僵化 ,但最终的原因是越来越无厘头,这说明整个技术体系是混乱的,是割裂的。
  • 实际排查顺序并都不 本文描述的那样,也走了越来越来越多弯路,越来越挂接是为了让读者更好的了解排查问题 的思路。
  • SSL Labs 工具 SSL Server Test 非常好,它是怎样检测出三个小 多域名对应的所有 IP 呢?事先有现成除理方案,我打算基于此,写三个小 多简单的小工具,快速诊断出 https 配置情况汇报(更轻量的工具)。

【编辑推荐】

【责任编辑:

未丽燕

TEL:(010)68476306】



点赞 0