gpt4 book ai didi

python - 在 Docker 中使用 pip install 时出现自签名证书错误,但仅限于某些软件包

转载 作者:行者123 更新时间:2023-12-03 08:49:53 27 4
gpt4 key购买 nike

我只是通过一个简单的示例来了解 Docker 的运行情况。这是我的 Docker 镜像文件:

FROM python:3.7-alpine

# copy all the files to the container
COPY . /test
WORKDIR /test

# install dependencies
RUN pip install pip_system_certs --trusted-host pypi.org --trusted-host files.pythonhosted.org --trusted-host pypi.python.org
RUN pip install -r requirements.txt



# run the command
CMD ["python", "./test_script.py"]

可信主机选项允许我们绕过公司网络安全设置并在 Windows 上内部安装软件包,它们似乎也适用于 Docker,但仅适用于某些软件包。例如,如果我的requirements.txt包含flask并请求一切都很好,但是pandas和numpy给我

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1076)'))': /simple/numpy/

并且失败了。我认为这对某些软件包有效但对其他软件包无效,这很奇怪。

任何帮助表示赞赏。

在 Windows 10 中使用 Docker Desktop。

最佳答案

我知道我公司的大公司代理删除了(大多数)普通证书并将它们重新包装在自签名证书中。这给我带来了很多类似的头痛。我通过以下方式解决了这个问题:

  • 通过在 Chrome 中访问互联网网站、 pip 击地址栏中的锁形图标并查看该网站证书的认证路径,找出我们的根证书。根 CA 是我们的内部 CA。
  • 转到 Windows 控制面板中的证书管理,在“受信任的根证书”下找到我公司的内部根证书,并将其导出为“Base-64 编码的 X.509”文件。
  • 将该证书文件复制到我的 Docker 容器中,并将其作为 CA 证书添加到我的容器内的“os”中。之后,我在容器中运行的所有内容都正常工作。

这里步骤 3 的问题是,对于不同版本的 Linux,执行此操作的具体方法是不同的。我对 Alpine 不太了解,但这些链接可能会为您指明大致正确的方向: https://blog.confirm.ch/adding-a-new-trusted-certificate-authority/
https://github.com/gliderlabs/docker-alpine/issues/260

此外,还有一个好处 - 如果您在应用程序中使用 python 的 requests 库,则默认情况下它不会使用系统 CA 证书。如果这对您来说是个问题,请阅读有关在此处接受的答案中设置 REQUESTS_CA_BUNDLE 的信息:Python Requests - How to use system ca-certificates (debian/ubuntu)?

关于python - 在 Docker 中使用 pip install 时出现自签名证书错误,但仅限于某些软件包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59670278/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com