最近,postman访问公司域名频繁报这个错,但是用powershell/curl/网页请求确不报。
postman临时解决方案:File-->Setting 把SSL certificate verification 选项关闭。
从Chrome浏览器小锁点进去,证书链泛域名解析是正常的,日期在范围内,从证书链开始查一直查到根都是在日期内的。肯定是哪里出了问题。
postman控制台也看不出什么问题。难道是HTTPS被劫持了?没办法,拿大杀器wireshark抓包试试。
跟踪正常请求和异常请求,都是TLSv1.2的请求,不存在SSL3版本低这个问题。
postman请求在交换证书之后就不请求了,powershell的请求在交换完证书之后继续请求。
那么wireshark不解密能看到服务器证书吗?答案是肯定的。
对比了一下证书,看看有没有什么区别?
找到服务器发送的certificate报文,对比一下。结果是没区别。排除HTTPS劫持。
那么有没有可能是postman校验的问题?
certificate报文是有整个证书链的,每个链可以看到过期日。这么一看,泛域名没过期,链上过期了,过期时间是5月30日。
我只想说,这一套证书链咋设计的,最底层的过期时间还能大于上一级链上的时间。。。。。。。。。不能大于的话瞎签发啥呀。
搜索新闻。
新闻说Sectigo的旧根证书过期了,用新的根证书签发一遍就OK了。
用上新证书之后重新wireshark抓了个包,日期更新了,不过新闻里说的 旧根为AddTrust External CA Root,新根为USERTrust RSA Certification Authority。这点我有点怀疑,抓包的结果看服务器证书都是四层
泛域名->Sectigo RSA Domain Validation Secure Server CA-->USERTrust RSA Certification Authority-->AddTrust External CA Root
更新证书前和更新证书后都是这四层。只不过日期更新了。可能我没理解好交叉授权这个事吧。