问题

问题

我目前正在实施私有 Docker Registry 服务器,nginx配置为https安全地将流量转发到正在运行的 Docker Registry(即docker-compose)实例在专用网络上(配置了 DNS、DHCP)。

我已经完成了所有设置,但必须创建自签名证书因为我不被允许使用“让我们加密”(硬性要求)。我已将文件部署.crt/usr/local/share/ca-certificates我网络上的所有 Ubuntu 主机上,并更新了证书存储(即通过sudo update-ca-certificates -f)。

但是,即使证书是“受信任的”(根据上面的步骤),该证书仍然注册为“自签名”,并且让 Docker Registry 完全运行的唯一方法是创建一个文件,,/etc/docker/daemon.json内容如下(假设我的 Docker Registry 实例正在registry我的域上的主机上运行lan):

{
  "insecure-registries" : [ "registry.lan:5000" ]
}

这会导致某些功能中断(即,如果启用“不安全的注册表”,某些插件将无法工作)。


问题

我如何配置我的私人网络(即假设它大多数时候甚至没有连接到互联网),以便网络上的所有机器都“完全信任”该证书(即该证书在本地网络上的主机之间“公开信任”)?即我可以运行什么命令或可以调整什么配置文件?

这似乎是一个可能的解决方案:在我的私人网络上创建一个 CA plus 服务器密钥。

谢谢。

答案1

将您的证书添加到 中是不够的/usr/local/share/ca-certificates。您必须确保它已读取其他人的 chmod,并将其相对路径添加到 中/usr/local/share/ca-certificates

假设你的证书是/usr/local/share/ca-certificates/self-signed/yourcert.crt

你应该编辑/etc/ca-certificates.conf

sudo 编辑器 /etc/ca-certificates.conf

并添加它的相对路径,确切地说是相对于/usr/local/share/ca-certificates/

所以它应该是这样的:

自签名/yourcert.crt

然后运行

sudo 更新 ca 证书

您应该在上面的命令输出中看到添加了 1 个证书。

请记住,此证书仅在特定主机上受信任。如果您希望它在内部受信任,您还需要将其部署到您的 docker 容器中。

相关内容