
我目前正在實施一個私人 Docker 註冊表伺服器,nginx
配置為將https
流量安全地轉送至正在執行的 Docker 註冊表(即docker-compose
)實例在專用網路上(已設定 DNS、DHCP)。
我的整個設定按預期工作,但必須建立自簽名證書因為我不被允許使用“讓我們加密吧”(硬性要求)。我已將該.crt
檔案部署到/usr/local/share/ca-certificates
網路上的所有 Ubuntu 主機上,並更新了憑證儲存(即透過sudo update-ca-certificates -f
)。
但是,即使證書是“受信任的”(來自上面的步驟),證書仍然註冊為“自簽名”,並且讓 Docker 註冊表充分工作的唯一方法是建立一個文件、/etc/docker/daemon.json
、 包含以下內容(假設我的 Docker 註冊表實例正在registry
我的lan
網域的主機上運行):
{
"insecure-registries" : [ "registry.lan:5000" ]
}
這會導致某些功能中斷(即,如果啟用“不安全註冊表”,某些外掛程式將無法運作)。
問題
我如何設定我的專用網路(即假設它大部分時間都沒有連接到互聯網)以便網路上的所有電腦「完全信任」該憑證(即該憑證在主機之間「公開信任」)本地網路)?即我可以運行什麼命令或可以調整設定檔?
這似乎是一個可能的解決方案:在我的專用網路上建立一個 CA 加伺服器金鑰。
謝謝。
答案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 update-ca-證書
您應該會在上面的命令輸出中看到新增了 1 個憑證。
請記住,該憑證僅在此特定主機上受信任。如果您希望它在內部受到信任,您還需要將其部署到 Docker 容器中。