首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Docker中安装pip时获得自签名证书错误,但只适用于某些包

问在Docker中安装pip时获得自签名证书错误,但只适用于某些包
EN

Stack Overflow用户
提问于 2020-01-09 18:39:56
回答 1查看 3.4K关注 0票数 1

我只是玩一个简单的例子,以获得一个基本的了解码头去。这是我的Docker图像文件:

代码语言:javascript
复制
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包含了烧瓶,并要求一切都很好,但是熊猫和numpy给我

警告:重试(重试(total=4,connect=None,read=None,redirect=None,status=None))在连接中断后(SSLCertVerificationError(1,'SSL: CERTIFICATE_VERIFY_FAILED证书验证失败:证书链中的自签名证书(_ssl.c:1076)‘)):/simple/numpy/

却失败了。我认为这是奇怪的,这是工作的一些包,但没有其他。

任何帮助都很感激。

在Windows 10中使用Docker桌面。

EN

回答 1

Stack Overflow用户

发布于 2020-01-09 21:14:48

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

  • 通过访问Chrome中的一个互联网站点,点击地址栏中的锁,查看站点证书的认证路径,找出我们的根证书是什么。根CA是我们的内部CA。
  • 在Windows控制面板中的证书管理面板下,在“受信任的根证书”下找到了我公司的内部根证书,并将其导出为"Base-64编码的X.509“文件。
  • 将该证书文件复制到我的Docker容器中,并将其作为CA证书添加到容器内的"os”中。在那之后,我在容器里运行的所有东西都起作用了。

这里的第3步的要点是,对于不同类型的linux,您到底是如何做到这一点的。我对阿尔卑斯山不太了解,但这些链接可能会让你大致指向正确的方向:https://blog.confirm.ch/adding-a-new-trusted-certificate-authority/

https://github.com/gliderlabs/docker-alpine/issues/260

另外,额外的捕获--如果在应用程序中使用python的请求库,默认情况下它不会使用系统CA证书。如果这对您来说是个问题,请阅读关于在此处接受的答案: REQUESTS_CA_BUNDLE:Python Requests - How to use system ca-certificates (debian/ubuntu)?中设置Python Requests - How to use system ca-certificates (debian/ubuntu)?的相关内容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59670278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档