适用于 Windows 的 Docker SSL 证书

问题描述 投票:0回答:6

我正在尝试将 docker 映像发布到私有存储库,但我无法弄清楚应该将 SSL 证书放置在 Windows 计算机上的何处。

根据此页面,证书应该位于

/etc/docker/certs.d/HOSTNAME
目录中。这显然不是 Windows 路径。但是,当我运行 docker 终端并输入
cd /etc
时,它确实会将我带到工作目录。

经过一番调查,我发现它要去

C:\Program Files\Git\etc
,所以我在该路径下创建了一个
docker\certs.d\docker-registry.lan
(docker-registry.lan是我们的内部注册表)目录。然后我使用
docker-machine stop
docker-machine start
命令重新启动 docker 机器。

但是,当我尝试推送时,我收到一条错误消息

x509: certificate signed by unknown authority

这个密钥对于其他通过 Linux 执行此操作的人来说效果很好,所以我知道这个密钥没问题。我相信问题是我没有将密钥存储在正确的位置。

我尝试了很多不同的钥匙位置,但似乎都不起作用。这一定是我所缺少的一个简单的解决方案。有解决这个问题的人可以帮帮我吗?

windows docker
6个回答
12
投票

情况已发生变化,无需在 Windows 10 上的任何位置放置证书文件或担心端口号。(截至 2019 年 7 月 21 日)

在 Docker Community 2.0.0.3 (31259) 上,只需将 docker 存储库的公共证书添加到本地计算机上的“受信任的根权限存储”即可。您可以双击您的证书,它将开始询问您要将其放在哪里。 (它可能也适用于当前用户商店,未检查)。

将证书添加到存储后,重新启动 Docker 服务,然后就可以从私人存储库中推送/拉取。

底层的 docker 虚拟机在启动期间从 Windows 获取所有受信任的根权限并为您进行管理。


8
投票

如果您在 Windows 上本地运行 Docker 守护程序,则正确的位置是

C:\ProgramData\docker\certs.d\myregistrydomain.com5000\ca.crt
。详细信息在这里:https://github.com/docker/docker/issues/21189#issuecomment-234997515


3
投票

在 Windows 上配置 Docker 客户端

要将注册表的 CA 证书传递到在 Windows 10 上运行的 Docker 客户端,请使用 Windows 证书导入向导。

Copy the ca.crt file to the Windows 10 machine on which you run the Docker client.
Right-click the ca.crt file and select Install Certificate.
Follow the prompts of the wizard to install the certificate.
Restart the Docker daemon:
    Click the up arrow in the task bar to show running tasks.
    Right-click the Docker icon and select Settings.
    Select Reset and click Restart Docker.
Log in to the registry server.

docker login registry_ip

2
投票

在适用于 Windows Server 的 (Docker EE) Docker Enterprise Edition 上,它可以与:“Martin Eden”指令一起使用:

https://github.com/moby/moby/issues/21189

  • 开始>“管理计算机证书”(也可以在控件中找到) 面板)
  • 右键单击“受信任的根证书颁发机构”> “所有任务”>“导入”
  • 浏览到 crt 文件,然后按住 “下一步”完成向导
  • 重新启动 Docker EE

0
投票

解决办法是

  1. 切换到
    ca.crt
    所在的本地文件夹
  2. 将文件复制到虚拟机:
    docker-machine scp ca.crt default:.
  3. 登录虚拟机:
    docker-machine ssh default
  4. 创建所需文件夹:
    sudo mkdir /var/lib/boot2docker/certs
  5. 将证书复制到位置:
    sudo cp ca.crt /var/lib/boot2docker/certs
  6. 退出虚拟机:
    exit
  7. 重新启动虚拟机:
    docker-machine restart default

答案基于 https://github.com/docker/machine/issues/1717https://github.com/boot2docker/boot2docker/issues/347


0
投票

@warmoverflow

嗨,正如您的回复,Docker 可以自动注册证书。

但是根据 boot2docker 中的“README.md”,您可以不使用 .crt,而是使用 .pem 文件。

.pem
格式)放入
/var/lib/boot2docker/certs/
目录,Boot2Docker会在启动时自动从持久分区加载它。

只需将 .crt 文件重命名为 .pem 文件。

https://github.com/boot2docker/boot2docker/pull/807.

© www.soinside.com 2019 - 2024. All rights reserved.