【问题标题】:How to ignore certificate errors in Boot2Docker on windows如何在 Windows 上忽略 Boot2Docker 中的证书错误
【发布时间】:2015-02-17 21:04:00
【问题描述】:

我通过 virtualbox 在 Windows 上运行 boot2docker 1.4.1。我支持 MITMs 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

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

【问题讨论】:

  • 同样的问题在这里找到了解决方案??
  • 我最终在 ubuntu 虚拟机上安装了 docker,也遇到了同样的问题。我最终通过将我的 MITM 代理和 CA 证书添加到我的 ubuntu 受信任的商店来解决这个问题。如果你知道受信任的商店在哪里,我相信你可以在 boot2docker 上做同样的事情。如果你还是卡住了,我可以帮你查一下。我不知道--insecure-registry 标志的真正作用。
  • 这是关于 --insecure-registry docs.docker.com/reference/commandline/cli/#insecure-registries 的文档。但它似乎不想将 index.docker.io 视为不安全的注册表,并且修改受信任的存储以解决此问题的工作量太大。这通常是因为 IT 部门将自己的根证书插入到主机的受信任存储中以嗅探 HTTPS 流量

标签: docker boot2docker


【解决方案1】:

编辑 看起来新的 docker 仅适用于 certain flavors of 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

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

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

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

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

  1. 首先,保存您需要的证书。以下是在 Firefox 中使用类似于https://stackoverflow.com/a/6966818/1981358 的步骤(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/&lt;username&gt;/&lt;folder&gt;/&lt;proxy-cert&gt;.pem /var/lib/boot2docker/certs/
  4. 创建文件/var/lib/boot2docker/bootlocal.sh 并包含来自https://gist.github.com/irgeek/afb2e05775fff532f960 的源(我刚刚在Windows 中使用Notepad++ 创建了文件并将其复制到与上述步骤类似的正确位置)
  5. 退出 ssh 并重新启动:C:\&gt;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.

【讨论】:

  • 仅供参考,我使用 docker 工具箱 (docker.com/docker-toolbox) 中的说明迁移到 docker-machine,无需进行类似更新,因此上述内容可能已过时。
  • @ppeater,我怀疑您在迁移已经存在的 boot2docker 映像时不需要进行任何更改。在全新安装时,我必须上传证书并使用 bootlocal.sh 将它们复制到 /etc/docker/certs.d//ca.crt,所以这个答案仍然相关。
  • 如果您没有安装到“默认”虚拟机,请确保上面的 docker-machine 命令包含您的虚拟机名称。例如:docker-machine ssh dev
  • 成功了!!!我尝试了许多解决方案,但除此之外没有任何效果。
【解决方案2】:

如果您在 Windows 10 上安装了 Docker for Windows,并且收到“x509: certificate signed by unknown authority”错误,您可以试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 2019-09-05
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    相关资源
    最近更新 更多