我目前正在实施私有 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 容器中。