记一次证书更换姿势不正确导致的曲折经历
写在Forefront Threat Management Gateway 2010 行将就木之际。
成都创新互联专注于企业成都全网营销推广、网站重做改版、孝南网站定制设计、自适应品牌网站建设、H5页面制作、成都做商城网站、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为孝南等各大城市提供网站开发制作服务。
周六突然接到老板电话,集团大佬移动邮件又不能使用了(为什么是又,那是另外一个故事了,有机会再讲)
根据预案我们做了几件事情:
- 测了一下自己手上的Apple访问移动邮件都正常,大佬是一台HUAWEI荣耀Note8
- 找另一个使用华为的用户也测了一下都正常
- 查了一下TMG日志,按该用户名搜访问日志,在周五晚上9:38是最后一条访问。也就是说客户端后面再也没有连TMG,所以当然也不会同步邮件
Failed Connection Attempt TMGServer01 6/28/2019 9:38:06 PM
Log type: Web Proxy (Reverse)
Status: 10054 An existing connection was forcibly closed by the remote host.
Rule: ActiveSync Rules 1
Source: External (114.11.111.222:40953)
Destination: Local Host (172.0.0.11:443)
Request: POST http://mail.domain.com.cn/Microsoft-Server-ActiveSync?Cmd=Ping&User=domainname%5Cusername1&DeviceId=androidc1003508868&DeviceType=Android
Filter information: Req ID: 0e8c098b; Compression: client=No, server=No, compress rate=0% decompress rate=0%
Protocol: https
User: paicdom\username1
Additional information
Client agent: Android/8.0.0-EAS-2.0
Object source: Internet (Source is the Internet. Object was added to the cache.)
Cache info: 0x8 (Request includes the AUTHORIZATION header.)
Processing time: 480093 MIME type: application/vnd.ms-sync.wbxml
- 查了一下IIS日志,按该用户名搜访问日志,只找到EWS的访问记录,没有ActiveSync,也是周五9点半后就没有记录了。
怀疑是这个用户邮箱损坏,遂New-Moverequest迁移到其他数据库。然而并没有什么。。
和老板沟通,在故障前做的唯一变更就是另一个同事周五晚上替换了侦听器上绑定的公网证书,但是我们自己测了Apple移动邮件还能访问,说明证书没什么问题。感觉这个怀疑点不成立。
又怀疑是否客户端真的没有连过来呢,是不是有可能被服务器拒绝了呢,所以在TMG上开启日志debug模式,手动在浏览器里输错密码,模拟被服务器拒绝的场景,是能看到Access Denied的记录。所以服务器拒绝论也不成立。
接下来怀疑是否客户端只是7层不通,还没有到达TMG的第一条规则就被拒绝了所以查不到记录呢,所以按照客户端最后一次连过来的IP,用Client IP作为筛选条件,还真的查到了客户端一直在反复和TMG服务器建立连接又正常释放掉的记录。严重怀疑是证书变更引起的故障。
遂安装Network Monitor,通过抓包,看到TCP三次握手正常,TMG把SSL证书发送给客户端后,客户端返回Fin关闭该连接,果断回滚了证书的变更,过了一会,可以看到客户端正常连过来了。
虽然故障解决了,但是老证书还有一周就要过期了,还是得替换。
周一去到用户现场,通过访问一台换了新证书的TMG,重现了这个问题,尝试配置一个新Profile时,客户端上看到明显报错——由于证书无效或不可信,无法连接到服务器。
老板说可以申请了一台同款设备来重现这个问题,找遍各大电商,唯独苏宁还有货而且可以×××,赶紧下单撸了一台。
为什么一个iOS信任的证书到了HUAWEI设备上就不信任了呢。我让替换证书的同事演示了一下证书导入的操作给我看,打开证书MMC,在Personal下右键导入一个pfx,然后SSL证书,中级CA证书,根CA证书全部放个人目录下了,我直接一口老血吐了出来,再去检查中级CA和根CA目录,果断中级CA目录下没有新证书的中级CA证书,看来原因就出在这里了。导入中级CA后,过了一段时间后,侦听器再应用这张新的证书。证书验证不通过的报错没有了。
另外还有一个插曲,HUAWEI的设备对证书校验是有缓存的,所以服务器导入中级CA后没有办法马上生效,可能要等好几个小时,客户端才会重新请求服务器提供新的证书链,如果已经是证书无效状态,即使服务器端已经配置好了证书,客户端仍需要傻等,而重启手机能够释放掉这个缓存。Just 重启 it。
度娘搜了一下中级证书颁发机构,找到一篇blog(https://xz.aliyun.com/t/2531 )还讲的蛮详细的,里面有一句讲到服务器按信任链的顺序发送完整的证书列表。该链中的第一个是服务器证书,接着是颁发服务器证书的intermediate CA 的证书,然后是下一个intermediate CA 的证书......直到Root CA的证书。服务器可以不发送Root CA证书,因为在大多数情况下,浏览器可以从任何intermediate CA 识别Root CA。像HUAWEI这个邮件客户端在整个SSL/TLS握手过程中执行了较为严格的证书链校验,需要拿到服务器证书和中级CA后,才认为服务器证书是有效的,而Apple只需要信任该证书的根CA就认为证书有效了。
本文名称:记一次证书更换姿势不正确导致的曲折经历
链接URL:http://scyanting.com/article/jpojph.html