2.2.7.2. レジストリーコンソールのセキュリティー保護
デフォルトでは、レジストリーコンソールは、レジストリーコンソールのデプロイ の手順ごとに手動でデプロイされる場合に自己署名 TLS 証明書を生成します。詳細は、レジストリーコンソールのトラブルシューティング を参照してください。
組織の署名済み証明書をシークレットボリュームとして追加する際には、以下の手順に従ってください。ここでは、証明書が oc
クライアントホストで利用可能であることを前提としています。
証明書とキーを含む .cert ファイルを作成します。以下を使用してファイルをフォーマットします。
- サーバー証明書と中間証明機関のための 1 つ以上数の BEGIN CERTIFICATE ブロック。
キーの BEGIN PRIVATE KEY または同種のものを含むブロック。キーは暗号化することができません。
以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow セキュリティーの保護されたレジストリーには、以下の SAN (サブジェクトの別名: Subject Alternative Names) 一覧が含まれているはずです。
2 つのサービスのホスト名。
以下に例を示します。
docker-registry.default.svc.cluster.local docker-registry.default.svc
docker-registry.default.svc.cluster.local docker-registry.default.svc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サービス IP アドレス。
以下に例を示します。
172.30.124.220
172.30.124.220
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを使ってコンテナーイメージレジストリーのサービス IP アドレスを取得します。
oc get service docker-registry --template='{{.spec.clusterIP}}'
oc get service docker-registry --template='{{.spec.clusterIP}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow パブリックホスト名。
以下に例を示します。
docker-registry-default.apps.example.com
docker-registry-default.apps.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを使ってコンテナーイメージレジストリーのパブリックホスト名を取得します。
oc get route docker-registry --template '{{.spec.host}}'
oc get route docker-registry --template '{{.spec.host}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow たとえば、サーバー証明書には以下のような SAN の詳細が記載されるはずです。
X509v3 Subject Alternative Name: DNS:docker-registry-public.openshift.com, DNS:docker-registry.default.svc, DNS:docker-registry.default.svc.cluster.local, DNS:172.30.2.98, IP Address:172.30.2.98
X509v3 Subject Alternative Name: DNS:docker-registry-public.openshift.com, DNS:docker-registry.default.svc, DNS:docker-registry.default.svc.cluster.local, DNS:172.30.2.98, IP Address:172.30.2.98
Copy to Clipboard Copied! Toggle word wrap Toggle overflow レジストリーコンソールは、証明書を /etc/cockpit/ws-certs.d ディレクトリーから読み込みます。また、拡張子 .cert が付いたファイルをアルファベット順で (最後から) 使用します。したがって、.cert ファイルには OpenSSL スタイルでフォーマットされた PEM ブロックが少なくとも 2 つ含まれる必要があります。
証明書がない場合、自己署名証明書が
openssl
コマンドで作成され、0-self-signed.cert ファイルに保存されます。
シークレットを作成します。
oc create secret generic console-secret \ --from-file=/path/to/console.cert
$ oc create secret generic console-secret \ --from-file=/path/to/console.cert
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このシークレットを registry-console デプロイメント設定に追加します。
oc set volume dc/registry-console --add --type=secret \ --secret-name=console-secret -m /etc/cockpit/ws-certs.d
$ oc set volume dc/registry-console --add --type=secret \ --secret-name=console-secret -m /etc/cockpit/ws-certs.d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、レジストリーコンソールの新規デプロイメントがトリガーされ、署名済み証明書が組み込まれます。