1.3. Red Hat Quay on OpenShift Container Platform のカスタム SSL/TLS 証明書の設定
Red Hat Quay が OpenShift Container Platform にデプロイされると、QuayRegistry
カスタムリソース定義 (CRD) の tls
コンポーネントはデフォルトで managed
に設定されます。その結果、OpenShift Container Platform の認証局が HTTPS エンドポイントの作成と SSL/TLS 証明書のローテーションに使用されます。
OpenShift Container Platform への Red Hat Quay の初期デプロイメントの前または後に、カスタム SSL/TLS 証明書を設定できます。このプロセスには、QuayRegistry
YAML ファイル内の configBundleSecret
リソースを作成または更新してカスタム証明書を統合し、tls
コンポーネントを unmanaged
に設定することが含まれます。
Red Hat Quay のカスタム SSL/TLS 証明書を設定する場合、管理者が証明書をローテーションします。
以下の手順により、カスタム SSL/TLS 証明書を適用して安全な通信を確保し、OpenShift Container Platform デプロイメント上の Red Hat Quay の特定のセキュリティー要件を満たすことができます。これらの手順では、認証局 (CA) バンドルまたは ssl.key
と ssl.cert
がすでに作成されていることを前提としています。この手順では、これらのファイルを OpenShift Container Platform デプロイメント上の Red Hat Quay に統合する方法を示します。これにより、レジストリーが指定されたセキュリティー設定で動作し、組織の SSL/TLS ポリシーに準拠するようになります。
-
HTTPS 証明書を使用して Red Hat Quay を保護するには、次の手順に従います。これは、認証局信頼バンドルの管理とは異なることに注意してください。CA 信頼バンドルは、
Quay
コンテナー内のシステムプロセスによって使用され、信頼できる CA に対して証明書を検証し、LDAP、ストレージバックエンド、OIDC 接続などのサービスが信頼されていることを確認します。 -
既存のデプロイメントに証明書を追加する場合は、設定を変更しない場合でも、新規の設定バンドルシークレットに既存の
config.yaml
を含める必要があります。
1.3.1. カスタム SSL/TLS configBundleSecret リソースの作成
カスタム SSL/TLS 証明書を作成した後に Red Hat Quay on OpenShift Container Platform 用のカスタム configBundleSecret
リソースを作成すると、ssl.cert ファイル
と ssl.key
ファイルをアップロードできるようになります。
前提条件
-
base64 で元の設定バンドルを
config.yaml
ファイルにデコードしている。詳細は、既存の設定のダウンロード を参照してください。 - カスタム SSL 証明書とキーを生成している。
手順
新しい YAML ファイル (例:
custom-ssl-config-bundle-secret.yaml)
を作成します。$ touch custom-ssl-config-bundle-secret.yaml
custom-ssl-config-bundle-secret
リソースを作成します。次のコマンドを入力してリソースを作成します。
$ oc -n <namespace> create secret generic custom-ssl-config-bundle-secret \ --from-file=config.yaml=</path/to/config.yaml> \ 1 --from-file=ssl.cert=</path/to/ssl.cert> \ 2 --from-file=extra_ca_cert_<name-of-certificate>.crt=ca-certificate-bundle.crt \ 3 --from-file=ssl.key=</path/to/ssl.key> \ 4 --dry-run=client -o yaml > custom-ssl-config-bundle-secret.yaml
- 1
<config.yaml>
はbase64 でデコード
されたconfig.yaml
ファイルです。- 2
<ssl.cert>
はssl.cert
ファイルです。- 3
- オプション:
--from-file=extra_ca_cert_<name-of-certificate>.crt=ca-certificate-bundle.crt
フィールドにより、Red Hat Quay はカスタム認証局 (CA) ファイルを認識できるようになります。LDAP、OIDC、またはカスタム CA を使用する別のサービスを使用している場合は、extra_ca_cert
パスを介してそれらを追加する必要があります。詳細は、「Red Hat Quay on OpenShift Container Platform への認証局のさらなる追加」を参照してください。 - 4
<ssl.key>
はssl.key
ファイルです。
オプション: 次のコマンドを入力して、
custom-ssl-config-bundle-secret.yaml
ファイルの内容を確認できます。$ cat custom-ssl-config-bundle-secret.yaml
出力例
apiVersion: v1 data: config.yaml: QUxMT1dfUFVMTFNfV0lUSE9VVF9TVFJJQ1RfTE9HR0lORzogZmFsc2UKQVVUSEVOVElDQVRJT05fVFlQRTogRGF0YWJhc2UKREVGQVVMVF9UQUdfRVhQSVJBVElPTjogMncKRElTVFJJQlVURURfU1R... ssl.cert: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVYakNDQTBhZ0F3SUJBZ0lVTUFBRk1YVWlWVHNoMGxNTWI3U1l0eFV5eTJjd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZZ3hDekFKQmdOVkJBWVR... extra_ca_cert_<name-of-certificate>:LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVYakNDQTBhZ0F3SUJBZ0lVTUFBRk1YVWlWVHNoMGxNTWI3U1l0eFV5eTJjd0RRWUpLb1pJaHZjTkFRRUwKQlFBd2dZZ3hDe... ssl.key: LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQ2c0VWxZOVV1SVJPY1oKcFhpZk9MVEdqaS9neUxQMlpiMXQ... kind: Secret metadata: creationTimestamp: null name: custom-ssl-config-bundle-secret namespace: <namespace>
次のコマンドを入力して、
configBundleSecret
リソースを作成します。$ oc create -n <namespace> -f custom-ssl-config-bundle-secret.yaml
出力例
secret/custom-ssl-config-bundle-secret created
次のコマンドを入力して、
QuayRegistry
YAML ファイルを更新して、custom-ssl-config-bundle-secret
オブジェクトを参照します。$ oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"configBundleSecret":"custom-ssl-config-bundle-secret"}}'
出力例
quayregistry.quay.redhat.com/example-registry patched
次のコマンドを入力して、
QuayRegistry
YAML のtls
コンポーネントをfalse
に設定します。$ oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"components":[{"kind":"tls","managed":false}]}}'
出力例
quayregistry.quay.redhat.com/example-registry patched
次のコマンドを入力して、
QuayRegistry
YAML ファイルが更新されてカスタム SSLconfigBundleSecret
リソースが使用されるようになり、およびtls
リソースがfalse
に設定されていることを確認します。$ oc get quayregistry <registry_name> -n <namespace> -o yaml
出力例
# ... configBundleSecret: custom-ssl-config-bundle-secret # ... spec: components: - kind: tls managed: false # ...
検証
次のコマンドを入力して、サーバーとポートへの TLS 接続を確認します。
$ openssl s_client -connect <quay-server.example.com>:443
出力例
# ... SSL-Session: Protocol : TLSv1.3 Cipher : TLS_AES_256_GCM_SHA384 Session-ID: 0E995850DC3A8EB1A838E2FF06CE56DBA81BD8443E7FA05895FBD6FBDE9FE737 Session-ID-ctx: Resumption PSK: 1EA68F33C65A0F0FA2655BF9C1FE906152C6E3FEEE3AEB6B1B99BA7C41F06077989352C58E07CD2FBDC363FA8A542975 PSK identity: None PSK identity hint: None SRP username: None TLS session ticket lifetime hint: 7200 (seconds) # ...