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

旧版PHP Docker容器执行curl报错SSL证书已过期问题咨询

问题原因

该错误由旧版PHP镜像内置的CA根证书信任库异常导致:

  • php:5.4/5.6-apache这类停止维护多年的镜像,基础系统多为早已结束生命周期的Debian 8/Jessie等发行版,内置的ca-certificates证书包长期未更新:要么缺少目标站点所用证书对应的新根CA凭证,要么仍保留了已经过期的根CA证书,触发SSL证书校验逻辑判定证书过期。
  • 已更新的现代操作系统会定期同步最新的受信任根CA列表,因此相同请求可以正常执行。

解决方案

临时测试方案(不推荐生产环境使用)

仅用于临时验证问题,存在SSL劫持风险:

  • 执行curl命令时添加-k/--insecure参数跳过证书校验:
    curl -k -X POST https://xxxxx.com
    
  • PHP代码中调用curl时添加配置跳过校验:
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    

永久修复方案

方案1:更新镜像内的CA证书包

修改Dockerfile,更新旧系统的证书库,示例配置如下:

FROM php:5.6-apache

# 替换已下线的旧Debian源为归档源,适配老版本系统
RUN sed -i 's/deb.debian.org/archive.debian.org/g' /etc/apt/sources.list \
    && sed -i 's/security.debian.org/archive.debian.org/g' /etc/apt/sources.list \
    && sed -i '/jessie-updates/d' /etc/apt/sources.list \
    # 安装更新CA证书包
    && apt-get update \
    && apt-get install -y --no-install-recommends ca-certificates \
    && update-ca-certificates \
    # 清理冗余缓存缩小镜像体积
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

方案2:单独导入目标站点的根证书

如果仅需要访问特定站点,可提前导出该站点的根CA证书,存入项目目录后在Dockerfile中导入:

FROM php:5.6-apache

# 复制本地提前准备好的根证书到容器证书目录
COPY ./your_target_site_root.crt /usr/local/share/ca-certificates/
RUN update-ca-certificates

长期建议

PHP5.4、5.6已经停止官方维护多年,存在大量已知安全漏洞,条件允许的情况下建议升级到官方支持的PHP版本,从根本上解决旧系统的各类兼容性、安全性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:45:04