私は現在、 nginx
トラフィックを実行中のDockerレジストリ(つまりdocker-compose
)インスタンスに安全に転送するように構成されたhttps
を備えたプライベートDockerレジストリサーバー を実装しています。プライベートネットワーク(DNS、DHCPが構成されている)。
セットアップ全体が期待どおりに機能していますが、使用が許可されていないため、 自己署名証明書を作成 する必要がありました "Let's Encrypt" (厳しい要件)。 .crt
ファイルをネットワーク上のすべてのUbuntuホストの/usr/local/share/ca-certificates
にデプロイし、証明書ストアを更新しました(つまり、Sudo update-ca-certificates -f
を介して)。
ただし、証明書が「信頼」されている場合でも(上記の手順から)、証明書は「自己署名」として登録されます。 Dockerレジストリを完全に機能させる唯一の方法はファイルを作成することです 、/etc/docker/daemon.json
、次の内容(Dockerレジストリインスタンスがregistry
ドメインのlan
ホストで実行されていると仮定):
{
"insecure-registries" : [ "registry.lan:5000" ]
}
これにより、一部の機能が機能しなくなります(つまり、「安全でないレジストリ」が有効になっていると機能しないプラグインがいくつかあります)。
ネットワーク上のすべてのマシンが証明書を「完全に信頼」するように(つまり、証明書が上のホスト間で「公的に信頼される」ように)プライベートネットワークを構成するにはどうすればよいですか(つまり、ほとんどの場合インターネットに接続されていないと仮定します)ローカルネットワーク)? つまりどのコマンドを実行したり、設定ファイルを微調整したりできますか?
これは可能な解決策のようです:プライベートネットワーク上にCAとサーバーキーを作成します。
ありがとうございました。
信頼できる認証局を使用して、x509証明書に署名します。
結果の証明書とそのキーを、TLSを終了するWebサーバーに配置します。
CA署名付き証明書の使用は、Let'sEncryptの使用を意味するものではありません。逆もありません。他のPKIを使用することは可能であり、組織によって実行されているか(適切に実行するためのプロジェクトのビット)、実行されていません。