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.certssl.key 文件。

先决条件

  • 您有 base64 将原始配置捆绑包解码为一个 config.yaml 文件。如需更多信息 ,请参阅下载现有配置
  • 您已生成了自定义 SSL 证书和密钥。

流程

  1. 创建新的 YAML 文件,如 custom-ssl-config-bundle-secret.yaml

    $ touch custom-ssl-config-bundle-secret.yaml
  2. 创建 custom-ssl-config-bundle-secret 资源。

    1. 运行以下命令来创建资源:

      $ 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& gt; 是您的 base64 解码config.yaml 文件。
      2
      其中 <ssl.cert& gt; 是您的 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& gt; 是您的 ssl.key 文件。
  3. 可选。您可以输入以下命令来检查 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>

  4. 输入以下命令来创建 configBundleSecret 资源:

    $ oc create -n <namespace> -f custom-ssl-config-bundle-secret.yaml

    输出示例

    secret/custom-ssl-config-bundle-secret created

  5. 输入以下命令更新 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

  6. 输入以下命令将 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

  7. 输入以下命令来确保 QuayRegistry YAML 文件已更新为使用自定义 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)
    
    # ...

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.