
私は現在、実行中のDocker Registry(つまり)インスタンスにトラフィックを安全にnginx
転送するように構成されたプライベートDocker Registryサーバーhttps
docker-compose
プライベート ネットワーク上 (DNS、DHCP が設定されている)。
セットアップ全体が期待通りに動作していますが、自己署名証明書を作成する使用が許可されていないため「暗号化しましょう」(ハード要件)。ネットワーク上のすべての Ubuntu ホスト.crt
にファイルを展開し、証明書ストアを更新しました (つまり、 経由)。/usr/local/share/ca-certificates
sudo update-ca-certificates -f
ただし、証明書が「信頼済み」であっても(上記の手順から)、証明書は「自己署名」として登録されており、Dockerレジストリを完全に動作させる唯一の方法は、ファイルを作成することです、、/etc/docker/daemon.json
次の内容になります (Docker Registry インスタンスが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 ca証明書を更新する
上記のコマンド出力に、追加された証明書が 1 つ表示されます。
この証明書はこの特定のホストでのみ信頼されることに注意してください。内部的に信頼されるようにしたい場合は、Docker コンテナにもデプロイする必要があります。