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

已向Docker安装企业证书仍报SSL: CERTIFICATE_VERIFY_FAILED如何解决

问题根因
  • Python包管理工具pip默认使用内置的CA证书集合,不会读取操作系统级别的CA证书存储,即便已将企业证书更新到系统CA目录,pip发起HTTPS请求时也不会加载该证书,因此触发SSL校验失败。
  • 此前遇到的requests库同类报错为相同逻辑导致:requests默认优先使用自带的CA证书bundle,不会自动读取系统CA存储。
解决方案

推荐采用全局环境变量配置方案,一次配置可同时解决pip安装和Python运行时的SSL校验问题,修改后Dockerfile示例如下:

FROM python:3.9

ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# 配置pip及Python HTTP类库使用系统CA证书集合
ENV PIP_CERT=/etc/ssl/certs/ca-certificates.crt
ENV REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt

WORKDIR /account
# 提前安装CA证书,确保后续所有SSL请求正常校验
COPY company.crt /usr/local/share/ca-certificates/
RUN apt-get update && apt-get install -y whois ca-certificates && update-ca-certificates

COPY Pipfile Pipfile.lock /account/
RUN pip install --upgrade pip
RUN pip install pipenv && pipenv install --system

COPY . /account/

配置说明

  • 新增的PIP_CERT环境变量会全局生效于所有pip命令,无需为每条pip指令单独添加--cert参数。
  • 新增的REQUESTS_CA_BUNDLE环境变量会覆盖requests等Python HTTP类库的默认CA证书路径,直接读取系统CA存储,无需额外修改业务代码即可解决运行时SSL报错问题。
  • 调整了证书安装步骤的顺序,确保后续所有涉及HTTPS请求的操作都可以正常加载企业证书。
  • 为apt-get install添加-y参数,避免构建过程中出现交互式确认导致构建中断。

异常排查

如果按上述配置修改后仍存在报错,可按以下方向排查:

  • 确认company.crt为完整的根CA证书,若仅提供中间证书会存在证书链不全的问题,仍会触发校验失败。
  • 确认company.crt为PEM格式,若为DER格式可通过命令openssl x509 -inform der -in company.cer -out company.crt转换后重新构建。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:09:03