一尘不染

如何在Windows上的Boot2Docker中忽略证书错误

docker

我有通过virtualbox在Windows上运行的boot2docker 1.4.1。我支持MITM
https证书的代理。我通过在中添加以下行来配置代理/var/lib/boot2docker/profile

export HTTP_PROXY=<proxyhost>:80
export HTTPS_PROXY=<proxyhost>:80
DOCKER_TLS=no
EXTRA_ARGS="--insecure-registry index.docker.io"

然而,当我跑docker@boot2docker:~$ docker run hello-world我得到

Unable to find image 'hello-world:latest' locally
Pulling repository hello-world
FATA[0006] Get https://index.docker.io/v1/repositories/library/hello-world/images
: x509: certificate signed by unknown authority

请帮助我找出忽略证书错误的正确方法。谢谢!


阅读 336

收藏
2020-06-17

共1个答案

一尘不染

编辑 看起来新的docker仅适用于Windows
10的某些版本
。如果您仍然停留在Windows
7上,我已经更新了以下内容,以反映安装最新版本的docker-toolbox(Docker
1.11.2)
时必须纠正“证书链中的自签名证书”错误的步骤。)。


终于在Windows 7上按照以下答案在Windows
7上工作了:https :
//github.com/boot2docker/boot2docker/issues/347

通过运行openssl s_client
-showcerts
检查这是您的问题:

docker@boot2docker:~$ openssl s_client -showcerts -CApath . -connect index.docker.io:443

(编辑:从-showcerts中删除了32个,并更正了主机名)

在证书链中,您将看到代理已插入自身,并且验证返回了类似以下的错误

Verify return code: 19 (self signed certificate in certificate chain)

如果您遇到相同的问题,请尝试以下步骤:

  1. 首先,保存所需的证书。这是在Firefox中使用的步骤,IE也可以使用证书导出向导来工作;注意:在Windows上,PEM证书编码称为Base-64编码的X.509(.CER)):
    • 在Firefox中,转到https://hub.docker.com/
    • 单击地址栏上的锁定图标以显示证书
    • 单击“更多信息”->“安全性”->“查看证书”->“详细信息”
    • 选择层次结构中从最高层开始的每个节点,然后单击“导出”和“保存”(选择X.509证书(PEM)格式)
    • 将上述文件保存在本地驱动器中的某个位置,将扩展名更改为.pem并将其移动到用户文件夹(或可通过ssh访问的任何其他位置)
  2. 创建一个文件夹来保存证书:docker@boot2docker:~$ sudo mkdir /var/lib/boot2docker/certs/
  3. 将证书文件复制到该位置: docker@boot2docker:~$ sudo cp /c/Users/<username>/<folder>/<proxy-cert>.pem /var/lib/boot2docker/certs/
  4. 创建文件/var/lib/boot2docker/bootlocal.sh并包含来自https://gist.github.com/irgeek/afb2e05775fff532f960的源代码(我刚刚使用Notepad ++在Windows中创建了文件,并将其复制到与上述步骤类似的正确位置)
  5. 退出ssh并重新启动: C:\>docker-machine restart
  6. 打开外壳docker-machine ssh并验证所做的更改:docker run hello-world

您应该看到包含以下内容的输出:

Hello from Docker.
This message shows that your installation appears to be working correctly.
2020-06-17