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

Windows下Docker容器安装SSL CA证书及Python HTTPS请求验证问题

问题原因分析

报错核心是公司HTTPS代理的中间人证书未被容器内的CA信任:

  • Windows宿主机运行正常的原因:公司代理的根证书已经预安装在Windows系统证书库中,Windows版的certifi会自动读取系统证书库完成验证
  • Docker容器中验证失败的原因:
    1. 公网CA包ca-certificates不包含你公司代理的私有根证书,所以仅安装系统CA的方案无效
    2. Linux环境下的certifi默认仅使用自带的公网CA列表,不会自动读取系统CA存储,即使你把证书装到系统CA里,Python默认也不会调用
解决方案

步骤1:导出公司代理的根证书

在Windows 10宿主机上操作:

  1. 用Edge/Chrome浏览器访问代码中的企鹅图片链接
  2. 点击地址栏左侧的🔒图标 → 「连接是安全的」→ 「证书」
  3. 切换到「证书路径」标签页,选中最顶层的根证书 → 点击「查看证书」
  4. 切换到「详细信息」标签页 → 点击「复制到文件」
  5. 导出格式选择「Base64 编码的 X.509 (.CER)」,保存为company_root.crt,存到Dockerfile同级目录

步骤2:修改Dockerfile配置

调整后的Dockerfile如下:

# start with a python env that already has urllib3 installed
FROM company_harbor/base_py3_container 

ENV HTTP_PROXY="my_company_proxy"
ENV HTTPS_PROXY="my_company_proxy"
# 配置Python及相关库使用系统CA证书
ENV REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
ENV SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

# 安装CA证书工具
RUN apt-get update && \ 
    apt-get install ca-certificates -y && \
    apt-get clean

# 复制公司根证书到系统CA目录
COPY company_root.crt /usr/local/share/ca-certificates/company_root.crt
RUN chmod 644 /usr/local/share/ca-certificates/company_root.crt && \
    update-ca-certificates

RUN pip install --upgrade certifi
COPY ./download_penguin.py ./download_penguin.py

CMD [ "python", "download_penguin.py" ]

可选:直接修改Python代码适配

如果不想修改容器配置,也可以直接把导出的company_root.crt复制到容器内,修改代码里的上下文指定即可:

https_handler = urllib.request.HTTPSHandler(context=ssl.create_default_context(cafile="/path/to/company_root.crt"))

内容的提问来源于stack exchange,提问作者Justin P.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:00:03