我正在尝试将证书添加到 Python 请求包所需的 Dockerfile 中:
FROM python:3.9-slim-buster
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
ENV PYTHONPATH="$PYTHONPATH:/app"
WORKDIR /app
COPY ./app .
COPY ./certs/*.crt /usr/local/share/ca-certificates/
RUN update-ca-certificates
RUN pip3 install requests
CMD ["python3", "main.py"]
使用上面的 Dockerfile,我得到以下错误:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain
根据我的测试,那是因为requests
正在使用certifi
并且只在内部查看/usr/local/lib/python3.9/site-packages/certifi/cacert.pem
。如果我在里面添加我的证书cacert.pem
,一切都会按预期工作并且错误消失了。
处理这个问题的pythonic方法是什么?理想情况下,我宁愿将证书插入目录,而不是修改文件。有没有办法“强制”Pythonrequests
在里面/etc/ssl/certs
查找证书以及证书cacert.pem
文件?如果我列出/etc/ssl/certs
目录内容,它包含我的 .pem 证书。
运行apt-get update
不会更新ca-certificates
,我已经在使用最新版本。当我执行update-ca-certificates
时,检测到新证书:
STEP 10/11: RUN update-ca-certificates
Updating certificates in /etc/ssl/certs...
2 added, 0 removed; done.
谢谢您的帮助。