问题描述
当通过互联网请求 https://api.weixin.qq.com
时,签发主体和签发机构如下:
而在客户机房请求时,签发主体和签发机构如下:
错误信息:
这表明客户端无法识别证书的签发机构,可能是因为证书颁发机构不受信任或未知。
排查步骤
使用以下命令查看证书文件内容,确认机房请求和互联网请求的证书内容是否一致:
原因分析
客户的深信服安全设备对请求域名的证书进行了替换。在某些情况下,类似于深信服这样的安全设备会检查流经的 HTTPS 流量。为了做到这一点,它们可能会替换 SSL/TLS 证书,以便能够解密和检查加密的内容。这种操作被称为 SSL/TLS 中间人攻击。
当这种替换发生时,最终用户收到的证书是由内部 CA(比如深信服)而非原始网站的 CA 签发的��如果客户端不信任这个内部 CA,就会出现证书错误。
解决方案
客户需要从他们的深信服安全设备中导出 CA 证书,然后将这个 CA 证书添加到受信任的根证书库中。
具体步骤
- 从深信服安全设备导出 CA 证书。
- 将 CA 证书添加到受信任的根证书库:
编辑/etc/pki/tls/certs/ca-bundle.crt
文件,将导出的 CA 证书追加到文件末尾。
在文件末尾追加 CA 证书。例如:
- 验证 CA 证书是否有效:
再次使用以下命令验证证书是否有效:
如果没有错误,并且返回的证书链包含刚刚添加的 CA 证书,则说明配置成功。
总结
通过以上步骤,可以解决由于深信服安全设备导致的证书验证错误问题。主要步骤包括从深信服设备导出 CA 证书并将其添加到受信任的根证书库中,确保客户端能够正确识别并信任该证书。