1.3. 在 OpenShift Container Platform 中为 Red Hat Quay 配置自定义 SSL/TLS 证书
当在 OpenShift Container Platform 上部署 Red Hat Quay 时,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 中,以确保 registry 使用指定的安全设置,并符合机构的 SSL/TLS 策略。
-
以下流程用于使用 HTTPS 证书保护 Red Hat Quay。请注意,这与管理证书颁发机构信任捆绑包不同。CA Trust Bundles 由
Quay容器中的系统进程用来根据可信 CA 验证证书,并确保 LDAP、存储后端和 OIDC 连接等服务是可信的。 -
如果要将证书添加到现有部署中,则必须在新配置捆绑包 secret 中包含现有
config.yaml文件,即使您没有进行任何配置更改。
1.3.1. 创建自定义 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
$ touch custom-ssl-config-bundle-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
custom-ssl-config-bundle-secret资源。运行以下命令来创建资源:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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
$ cat custom-ssl-config-bundle-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来创建
configBundleSecret资源:oc create -n <namespace> -f custom-ssl-config-bundle-secret.yaml
$ oc create -n <namespace> -f custom-ssl-config-bundle-secret.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
secret/custom-ssl-config-bundle-secret created
secret/custom-ssl-config-bundle-secret createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令更新
QuayRegistryYAML 文件来引用custom-ssl-config-bundle-secret对象:oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"configBundleSecret":"custom-ssl-config-bundle-secret"}}'$ oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"configBundleSecret":"custom-ssl-config-bundle-secret"}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
quayregistry.quay.redhat.com/example-registry patched
quayregistry.quay.redhat.com/example-registry patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令将
QuayRegistryYAML 的tls组件设置为False:oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"components":[{"kind":"tls","managed":false}]}}'$ oc patch quayregistry <registry_name> -n <namespace> --type=merge -p '{"spec":{"components":[{"kind":"tls","managed":false}]}}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
quayregistry.quay.redhat.com/example-registry patched
quayregistry.quay.redhat.com/example-registry patchedCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输入以下命令来确保
QuayRegistryYAML 文件已更新为使用自定义 SSLconfigBundleSecret资源,并且您的 和tls资源已设置为False:oc get quayregistry <registry_name> -n <namespace> -o yaml
$ oc get quayregistry <registry_name> -n <namespace> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
输入以下命令确认到服务器和端口的 TLS 连接:
openssl s_client -connect <quay-server.example.com>:443
$ openssl s_client -connect <quay-server.example.com>:443Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow