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

RaG*_*aGe 11 docker boot2docker

我通过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"
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时,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
Run Code Online (Sandbox Code Playgroud)

请帮我弄清楚忽略证书错误的正确方法.谢谢!

pea*_*ter 21

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


最后在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
Run Code Online (Sandbox Code Playgroud)

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

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

Verify return code: 19 (self signed certificate in certificate chain)
Run Code Online (Sandbox Code Playgroud)

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

  1. 首先,保存您需要的证书.以下是在Firefox中使用的步骤,类似于/sf/answers/487677291/(Chrome和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的源代码(我刚刚在Windows中使用Notepad ++创建了该文件,并将其复制到与上述步骤类似的正确位置)
  5. 退出ssh并重启: C:\>docker-machine restart
  6. 打开shell docker-machine ssh并验证更改是否有效:docker run hello-world

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

Hello from Docker.
This message shows that your installation appears to be working correctly.
Run Code Online (Sandbox Code Playgroud)

  • @ppeater,我怀疑你在迁移已经存在的boot2docker镜像时不需要进行任何更改.在全新安装时,我必须上传证书并使用bootlocal.sh将它们复制到/etc/docker/certs.d/<domain name> /ca.crt,所以这个答案仍然有用. (2认同)

Pau*_*son 5

如果您在Windows 10安装了Docker for Windows,并且收到“x509:由未知机构签名的证书”错误,您可以尝试以下操作:

  1. 为 Windows 运行 Docker。
  2. 一段时间后,您将在 Windows 通知区域(右下角)中看到 docker 图标在此处输入图片说明
  3. 右键单击该图标并选择“设置...”
  4. 设置窗口将打开。选择左侧的“Docker Daemon”。
  5. 将您的私有注册表添加到以 JSON 格式显示配置的文本框中的“insecure-registries”集合中。然后点击“应用”。在此处输入图片说明