Letsencrypt DST Root CA X3致Magento SOAP调用失败:客户端还是服务端问题?
问题根因判断
该问题的根源在客户端,而非服务端配置错误
你看到的证书链是Let's Encrypt官方默认提供的「兼容旧安卓设备」的长链配置,将ISRG Root X1通过已过期的DST Root CA X3交叉签名,目的是让安卓7.0以下的系统仍能正常识别证书,该服务端配置完全符合通用规范。
浏览器可以正常访问的原因是:主流桌面/移动端浏览器早已将ISRG Root X1纳入内置根证书库,且校验逻辑会自动跳过已过期的DST根锚点,直接信任内置的ISRG根,所以访问无异常。
SOAP客户端报错的原因是:PHP SoapClient、旧版SOAPUI这类工具依赖的底层CA证书库(通常是系统CA存储、旧版OpenSSL、Java密钥库)要么没有内置ISRG Root X1根证书,要么校验逻辑不支持在上级根过期时自动切换信任已内置的子根证书,因此会触发证书校验失败,导致无法加载WSDL文件。
可选解决方案
方案1:调整服务端证书链(无需改动客户端)
如果你的服务不需要兼容安卓7.0以下的设备,可以将证书链切换为Let's Encrypt的短链,直接终止于ISRG Root X1,无需附带交叉签名的DST根相关链节,所有自带ISRG根的新客户端即可正常校验。
方案2:修复客户端配置(无需改动服务端)
- PHP端修复:
- 更新操作系统的根证书包,确保ISRG Root X1已被纳入信任列表
- 或在初始化SoapClient时手动指定可信根证书路径,示例代码:
$context = stream_context_create([ 'ssl' => [ 'cafile' => '/path/to/isrg-root-x1.pem', 'verify_peer' => true, 'verify_peer_name' => true ] ]); $client = new SoapClient('https://xyz.de/api/v2_soap?wsdl=1', ['stream_context' => $context]); - SOAPUI端修复:
- 升级到最新版SOAPUI,新版已内置ISRG Root X1根证书
- 或手动将ISRG Root X1证书导入SOAPUI使用的JRE环境的
cacerts密钥库中
内容的提问来源于stack exchange,提问作者Michael Leiss
相关产品推荐
相关产品推荐

