12.2. 创建自定义 SSL/TLS configBundleSecret 资源
在创建自定义 SSL/TLS 证书后,您可以在 OpenShift Container Platform 上为 Red Hat Quay 创建自定义 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)文件。如果您使用使用自定义 CA 的 LDAP、OIDC 或者其它服务,您必须通过extra_ca_cert路径添加它们。如需更多信息,请参阅"在 OpenShift Container Platform 上向 Red Hat Quay 添加其他证书颁发机构"。 - 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 文件已更新为使用自定义 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) # ...