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.yamlcustom-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次のコマンドを入力して、
QuayRegistryYAML ファイルを更新して、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次のコマンドを入力して、
QuayRegistryYAML の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次のコマンドを入力して、
QuayRegistryYAML ファイルがカスタム SSL のconfigBundleSecretリソースを使用するように更新されており、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) # ...