Windows上的Docker(Boot 2Docker)-证书由未知授权机构签名错误

eqoofvh9  于 2022-12-26  发布在  Docker
关注(0)|答案(3)|浏览(237)

我在Windows上运行Docker(boot2docker + Oracle Virtual Box)。在我的公司环境中,他们修改证书,使CA成为公司的自签名CA。因此,链的最终结果如下:

Company's CA
    |__
        Company's Intermediate CA
            |__
               Docker Certificate

当我尝试运行任何命令时,例如:

docker run hello-world

我得到这个错误:

Get https://index.docker.io/v1/repositories/library/hello-world/images: x509: certificate signed by unknown authority

我已经找到了这个问题的几个答案,但总是针对Linux环境。我如何在Windows中解决这个问题?

kyvafyod

kyvafyod1#

这个普遍的问题已经困扰了我几个月了。我第一次注意到它是在尝试让本地虚拟机获取Python包的时候,所以我已经有了证书会是一个问题的想法。我为我的VM解决了这个问题,但直到今天才能为Docker找到一个解决方案。诀窍是将证书添加到Docker的证书存储中并使它们持久。这是通过使用每次机器启动时执行的bootlocal.sh脚本来完成的。
我假设如果你已经找到了Linux的答案,你已经知道了第一步。为了彻底起见,我将在这里记录它们,因为其他人可能没有做到这一点。如果你已经通过以前的尝试完成了#1和#2,请从下面的#3开始。
1.获取企业根证书集,该证书集应安装在企业配置的浏览器中。在Chrome浏览器中,您可以转到“设置”,单击“显示高级设置”,然后向下滚动到HTTPS/SSL,在此选择“管理证书”。我的组织已将它们放入“受信任的根证书颁发机构”中,并以组织的名称命名。导出每个证书(我有两个),一次一个。您可以选择DER格式并执行下面的步骤#2转换为PEM,或者您可以选择Base-64编码的x.509(.CER)并简单地将扩展名重命名为.pem并跳过步骤#2。
1.一旦您将它们保存到已知位置,您将希望将它们转换为PEM格式,除非您另存为duch。我发现的最简单的方法是从Docker Quickstart终端内运行OpenSSL.exe[1]命令。

openssl x509 -inform der -in certificate.cer -out certificate.pem

1.一旦你有了.pem文件,你会想把它们复制到一个你的Docker机器可以访问的位置。通常对于MS Windows,你会有主机的/c/Users自动挂载在你的Docker机器内。我在c:\Users*my.username*\certs中创建了一个目录,并把它们复制到那里。
1.这一步可能不是绝对必要的,但我就是这么做的,而且很有效。你会想把这些证书复制到你的boot 2docker分区,这是持久的。我正在连接我的默认机器,这是你在第五步需要做的事情。

MINGW64:$ docker-machine ssh default

docker@default:~$ sudo -s
root@default:/home/docker# mkdir /var/lib/boot2docker/certs
root@default:/home/docker# cp /c/Users/my.username/certs/*.pem /var/lib/boot2docker/certs/

1.现在是时候编写一个bootlocal.sh脚本了,它会在每次系统启动时将证书复制到正确的位置。[2]如果您还没有这样做,请按照步骤4打开到计算机的SSH连接。

touch /var/lib/boot2docker/bootlocal.sh && chmod +x /var/lib/boot2docker/bootlocal.sh
vi /var/lib/boot2docker/bootlocal.sh

插入以下内容并保存文件:

#!/bin/sh

    mkdir -p /etc/docker/certs.d && cp /var/lib/boot2docker/certs/*.pem /etc/docker/certs.d

1.从计算机内部使用reboot命令或从Docker终端使用docker-machine命令重新启动计算机:

docker-machine restart default

现在你应该可以运行“hello-world”和其他程序了。
来源
[1][https://serverfault.com/questions/254627/how-to-convert-a-cer-file-in-pem](https://serverfault.com/questions/254627/how-to-convert-a-cer-file-in-pem)
[2] https://github.com/boot2docker/boot2docker/issues/347#issuecomment-189112043

olhwl3o2

olhwl3o22#

一种方法来做到这一点与火狐浏览器,去url:https://auth.docker.io/token?scope=repository%3Alibrary%2Fhello-world%3Apull&service=registry.docker.io,单击查看证书的详细信息并将其解压缩为crt。
将文件复制到操作系统存储crt的虚拟机:
中央操作系统

etc/pki/ca-trust/source/anchors/
# Then run
update-ca-trust force-enable
update-ca-trust extract

Ubuntu

/usr/share/ca-certificates
#Then run
sudo dpkg-reconfigure ca-certificates

重启Docker应该可以用了

qoefvg9y

qoefvg9y3#

导出证书时,可以选择文件格式为“Base-64 encoded x.509(.CER)”,最后将证书扩展名重命名为**.pem**。

相关问题