You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何更新php5.6-curl以支持验证Let's Encrypt新X1证书

适配方案

方案1:重新编译php5.6-curl扩展绑定新的openssl/curl

这是最彻底的解决方案,原有ondrej源的php5.6-curl默认绑定Ubuntu14.04自带的旧版openssl,单独更新系统openssl和curl不会自动同步到php扩展,需要手动重编译:

  • 首先验证当前php-curl绑定的ssl版本:
    php -r "var_dump(curl_version()['ssl_version']);"
    
    如果输出版本低于你安装的openssl 1.1.1b,说明扩展未关联新版openssl。
  • 安装php5.6开发依赖:
    apt-get install php5.6-dev
    
  • 进入php5.6源码的curl扩展目录,执行编译流程:
    cd /usr/src/php5.6/ext/curl
    phpize
    # 替换为你实际安装新版openssl和curl的路径
    ./configure --with-curl=/usr/local/curl --with-openssl-dir=/usr/local/openssl
    make && make install
    
  • 重启php-fpm或apache服务后重新执行版本验证命令,确认ssl版本更新后测试请求即可。

方案2:手动指定CA证书路径(无编译需求,快速生效)

如果编译扩展门槛较高,可直接通过配置指定ISRG Root X1根证书的路径:

  • 先将ISRG Root X1的PEM格式证书存入服务器固定路径,例如/usr/local/share/ca-certificates/isrgrootx1.pem
  • 全局生效配置:修改php.ini添加以下两行,重启php服务即可
    curl.cainfo = "/usr/local/share/ca-certificates/isrgrootx1.pem"
    openssl.cafile = "/usr/local/share/ca-certificates/isrgrootx1.pem"
    
  • 单请求生效配置:在代码的curl请求逻辑中添加配置项,无需修改全局配置
    curl_setopt($ch, CURLOPT_CAINFO, '/usr/local/share/ca-certificates/isrgrootx1.pem');
    // 保留ssl校验逻辑,不要关闭VERIFYPEER规避问题
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    

方案3:清理旧根证书冲突

如果执行上述方案后仍然异常,检查系统信任的CA证书列表,移除已过期的DST Root CA X3证书避免证书链回退:

sed -i 's/mozilla\/DST_Root_CA_X3.crt/!mozilla\/DST_Root_CA_X3.crt/g' /etc/ca-certificates.conf
update-ca-certificates

内容的提问来源于stack exchange,提问作者William

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:45:03