记一次现场第三方https接口访问证书验证失败问题解决

1.背景
某现场有需求要推送数据到第三方平台使用https接口,我们的程序部署在一台老的windows服务器上,对方升级了SSL证书,然后无法建立https连接了,提示证书链不完整,报错信息如下
The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: PartialChain
其实这个错非常明显就是https验证证书链失败导致的,也很好解决,当时没遇到过,实在花了一番功夫

2.如何排查
使用openssl工具验证证书信息即可
执行一个命令
openssl s_client -connect xxxxxx对方域名地址端口号 -showcerts
对于 linux系统 这个命令自带
windows需要安装ssl工具,我选择下载了 965633e0-0e1a-4b1f-bf8a-b3154bb3792e
然后下一步下一步安装好了之后,把bin配置到环境变量,用cmd/powershell执行一下上面的命令
把信息导出来(全选复制)
86aa709a-4a1c-47f5-b07c-ca70b880ff33
会输出相关的证书信息
直接扔给ai分析得到结论
bce1ad92c6b26ec45ebe292eca56b26b
我们的老服务器上缺少 Digicert GlobalRoot G2 证书
下载安装问题解决,去哪里下载直接搜索一下就可以下载到
3. 知识补充-访问https的证书链是怎么回事
根 CA(DigiCert Global Root G2)← 浏览器出厂就内置信任
↑ 签发
中间 CA(DNSPod TLS RSA CA 2025)← 需要额外获取
↑ 签发
终端证书(*.xxx.com)← 服务器发来的

现在的情况就是SSL握手的时候得到了中间CA和终端证书,但是这些证书需要和根进行验证,才能够握手建立连接,我们的服务器太老(DigiCert Global Root G2是win10以后才自带在windows里面的)没有这个证书自然无法建立连接,所有一直报错

4.后记
这个问题花了2个半天才研究明白,还是对https证书的知识不了解还有不会用openssl工具进行调试导致的,以后碰到日志报错明确指向证书验证问题的,用openssl工具获取调试数据,然后就能明白少了什么。

posted @ 2026-08-25 16:18  lovefoolself  阅读(6)  评论(0)    收藏  举报