第 5 章 在 Red Hat Quay 容器中添加额外的证书颁发机构


extra_ca_certs 目录是可以存储其他证书颁发机构(CA)的目录,以扩展可信证书集合。Red Hat Quay 使用这些证书来验证与外部服务的 SSL/TLS 连接。在部署 Red Hat Quay 时,您可以将所需的 CA 放在这个目录中,以确保到 LDAP、OIDC 和存储系统等服务的连接会被正确保护并验证。

对于独立 Red Hat Quay 部署,您必须创建这个目录,并将额外的 CA 证书复制到那个目录中。

先决条件

  • 有用于所需服务的 CA。

流程

  1. 输入以下命令查看要添加到容器中的证书:

    $ cat storage.crt

    输出示例

    -----BEGIN CERTIFICATE-----
    MIIDTTCCAjWgAwIBAgIJAMVr9ngjJhzbMA0GCSqGSIb3DQEBCwUAMD0xCzAJBgNV...
    -----END CERTIFICATE-----

  2. 输入以下命令,在 Red Hat Quay 目录的 /config 文件夹中创建 extra_ca_certs

    $ mkdir -p /path/to/quay_config_folder/extra_ca_certs
  3. 将 CA 文件复制到 extra_ca_certs 文件夹。例如:

    $ cp storage.crt /path/to/quay_config_folder/extra_ca_certs/
  4. 输入以下命令,确保 storage.crt 文件存在于 extra_ca_certs 文件夹中:

    $ tree /path/to/quay_config_folder/extra_ca_certs

    输出示例

    /path/to/quay_config_folder/extra_ca_certs
    ├── storage.crt----

  5. 输入以下命令来获取 QuayCONTAINER ID

    $ podman ps

    输出示例

    CONTAINER ID        IMAGE                                COMMAND                  CREATED             STATUS              PORTS
    5a3e82c4a75f        <registry>/<repo>/quay:{productminv} "/sbin/my_init"          24 hours ago        Up 18 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 443/tcp   grave_keller

  6. 输入以下命令重启容器

    $ podman restart 5a3e82c4a75f
  7. 运行以下命令确认证书已复制到容器命名空间中:

    $ podman exec -it 5a3e82c4a75f cat /etc/ssl/certs/storage.pem

    输出示例

    -----BEGIN CERTIFICATE-----
    MIIDTTCCAjWgAwIBAgIJAMVr9ngjJhzbMA0GCSqGSIb3DQEBCwUAMD0xCzAJBgNV...
    -----END CERTIFICATE-----

5.1. 当在 Kubernetes 上部署 Red Hat Quay 时,添加自定义 SSL/TLS 证书

在 Kubernetes 上部署时,Red Hat Quay 将 secret 中的挂载为卷来存储配置资产。目前,这会破坏超级用户面板的上传证书功能。

作为临时解决方案,在部署 Red Hat Quay base64 编码证书可以添加到 secret 中。

当在 Kubernetes 上部署 Red Hat Quay 时,请使用以下步骤添加自定义 SSL/TLS 证书。

先决条件

  • 已部署 Red Hat Quay。
  • 您有一个自定义 ca.crt 文件。

流程

  1. 输入以下命令对 SSL/TLS 证书的内容进行 Base64 编码:

    $ cat ca.crt | base64 -w 0

    输出示例

    ...c1psWGpqeGlPQmNEWkJPMjJ5d0pDemVnR2QNCnRsbW9JdEF4YnFSdVd3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=

  2. 输入以下 kubectl 命令来编辑 quay-enterprise-config-secret 文件:

    $ kubectl --namespace quay-enterprise edit secret/quay-enterprise-config-secret
  3. 为证书添加一个条目,并粘贴条目下的完整 base64 编码字符串er。例如:

      custom-cert.crt:
    c1psWGpqeGlPQmNEWkJPMjJ5d0pDemVnR2QNCnRsbW9JdEF4YnFSdVd3PT0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
  4. 使用 kubectl delete 命令删除所有 Red Hat Quay pod。例如:

    $ kubectl delete pod quay-operator.v3.7.1-6f9d859bd-p5ftc quayregistry-clair-postgres-7487f5bd86-xnxpr quayregistry-quay-app-upgrade-xq2v6  quayregistry-quay-database-859d5445ff-cqthr quayregistry-quay-redis-84f888776f-hhgms

    之后,Red Hat Quay 部署会自动将 pod 替换为新证书数据。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.