1.2. 证书


在 Red Hat Advanced Cluster Management 中运行的服务所需的所有证书都是在 Red Hat Advanced Cluster Management 安装过程中创建的。证书由 OpenShift 平台的以下组件创建和管理:

  • OpenShift Service Serving 证书
  • Red Hat Advanced Cluster Management Webhook 控制器
  • Kubernetes 证书 API
  • OpenShift 默认入口

需要的访问权限: 集群管理员

继续阅读以了解有关证书管理的更多信息:

注意 :用户负责证书轮转和更新。

1.2.1. Red Hat Advanced Cluster Management hub 集群证书

OpenShift 默认入口证书被视为 hub 集群证书。安装 Red Hat Advanced Cluster Management 后,可观察性证书会被可观察性组件创建并使用,以便在 hub 集群和受管集群之间的流量上提供 mutual TLS。与可观察证书关联的 Kubernetes secret。

  • open-cluster-management-observability 命名空间包含以下证书:

    • Observability-server-ca-certs:获取 CA 证书来签署服务器端证书
    • Observability-client-ca-certs:获取 CA 证书来签署客户端的证书
    • Observability-server-certs:获取由 observability-observatorium-api 部署使用的服务器证书
    • Observability-grafana-certs:获取 observability-rbac-query-proxy 部署使用的客户端证书
  • open-cluster-management-addon-observability 命名空间在受管集群中包含以下证书:

    • Observability-managed-cluster-certs :与 hub 服务器中的 observability-server-ca-certs 相同的服务器 CA 证书
    • observability-controller-open-cluster-management.io-observability-signer-client-cert:由被 metrics-collector-deployment 使用的客户证书

CA 证书的有效期为五年,其他证书的有效期为一年。所有可观察证书会在过期后自动刷新。查看以下列表以了解证书自动更新时的影响:

  • 当剩余的有效时间不超过 73 天时,非 CA 证书将自动续订。续订证书后,相关部署中的 Pod 会自动重启以使用更新的证书。
  • 当剩余有效时间不超过一年时,CA 证书会被自动续订。证书被续订后,旧的 CA 不会被删除,而是与更新的 CA 共存。相关部署同时使用旧和更新的证书,并继续工作。旧的 CA 证书在过期时会被删除。
  • 当证书被续订时,hub 集群和受管集群之间的流量不会中断。

查看以下 Red Hat Advanced Cluster Management hub 集群证书表:

表 1.1. Red Hat Advanced Cluster Management hub 集群证书
NamespaceSecret 名称Pod 标签 

open-cluster-management

channels-apps-open-cluster-management-webhook-svc-ca

app=multicluster-operators-channel

open-cluster-management

channels-apps-open-cluster-management-webhook-svc-signed-ca

app=multicluster-operators-channel

open-cluster-management

multicluster-operators-application-svc-ca

app=multicluster-operators-application

open-cluster-management

multicluster-operators-application-svc-signed-ca

app=multicluster-operators-application

open-cluster-management-hub

registration-webhook-serving-cert signer-secret

不是必需的

open-cluster-management-hub

1.2.2. Red Hat Advanced Cluster Management 管理的证书

查看下表,了解包含 Red Hat Advanced Cluster Management 管理的证书和相关 secret 的组件 pod 的总结列表:

表 1.2. 包含 Red Hat Advanced Cluster Management 管理证书的 Pod
NamespaceSecret 名称(如果适用)

open-cluster-management-agent-addon

cluster-proxy-open-cluster-management.io-proxy-agent-signer-client-cert

open-cluster-management-agent-addon

cluster-proxy-service-proxy-server-certificates

1.2.2.1. 受管集群证书

证书用于使用 hub 集群验证受管集群。因此,了解与这些证书关联的故障排除方案非常重要。如需了解更多详细信息,请在 Additional resources 部分中的 Troubleshooting imported clusters offline after certificate change 部分。

受管集群证书会自动刷新。

1.2.3. 其他资源

1.2.4. 使用您自己的可观察证书颁发机构 (CA) 证书

安装 Red Hat Advanced Cluster Management for Kubernetes 时,默认只为可观察性提供证书颁发机构 (CA)证书。如果您不想使用 Red Hat Advanced Cluster Management 生成的默认可观察性 CA 证书,您可以在启用可观察性前选择使用自己的可观察 CA 证书。

1.2.4.1. 使用 OpenSSL 命令生成 CA 证书

Observability 需要两个 CA 证书,一个用于服务器端,另一个用于客户端。

  • 使用以下命令生成您的 CA RSA 私钥:

    openssl genrsa -out serverCAKey.pem 2048
    openssl genrsa -out clientCAKey.pem 2048
  • 使用私钥生成自签名 CA 证书。运行以下命令:

    openssl req -x509 -sha256 -new -nodes -key serverCAKey.pem -days 1825 -out serverCACert.pem
    openssl req -x509 -sha256 -new -nodes -key clientCAKey.pem -days 1825 -out clientCACert.pem

1.2.4.2. 创建与 BYO observability CA 证书关联的 secret

完成以下步骤以创建 secret:

  1. 使用您的证书和私钥创建 observability-server-ca-certs secret。运行以下命令:

    oc -n open-cluster-management-observability create secret tls observability-server-ca-certs --cert ./serverCACert.pem --key ./serverCAKey.pem
  2. 使用您的证书和私钥创建 observability-client-ca-certs secret。运行以下命令:

    oc -n open-cluster-management-observability create secret tls observability-client-ca-certs --cert ./clientCACert.pem --key ./clientCAKey.pem

1.2.4.3. 其他资源

1.2.5. 管理证书

继续阅读以了解有关如何刷新、替换、轮转和列出证书的信息。

1.2.5.1. 刷新 Red Hat Advanced Cluster Management Webhook 证书

您可以刷新 Red Hat Advanced Cluster Management 受管证书,它们是由 Red Hat Advanced Cluster Management 服务创建和管理的证书。

完成以下步骤以刷新 Red Hat Advanced Cluster Management 管理的证书:

  1. 运行以下命令,删除与 Red Hat Advanced Cluster Management 管理证书关联的 secret:

    oc delete secret -n <namespace> <secret> 1
    1
    <namespace><secret> 替换为您要使用的值。
  2. 运行以下命令,重启与 Red Hat Advanced Cluster Management 受管证书关联的服务:

    oc delete pod -n <namespace> -l <pod-label> 1
    1
    <namespace><pod-label> 替换为 Red Hat Advanced Cluster Management 受管集群证书 表中的值。

    注: 如果没有指定 pod-label,则不会重启任何服务。secret 被重新创建并自动使用。

1.2.5.2. 替换 alertmanager 路由的证书

如果您不想使用 OpenShift 默认入口证书,您可以通过更新 alertmanager 路由来替换 alertmanager 证书。完成以下步骤:

  1. 使用以下命令检查可观察证书:

    openssl x509  -noout -text -in ./observability.crt
  2. 将证书上的通用名称 (CN) 更改为 alertmanager
  3. 使用 alertmanager 路由的主机名更改 csr.cnf 配置文件中的 SAN。
  4. open-cluster-management-observability 命名空间中创建以下两个 secret。运行以下命令:

    oc -n open-cluster-management-observability create secret tls alertmanager-byo-ca --cert ./ca.crt --key ./ca.key
    
    oc -n open-cluster-management-observability create secret tls alertmanager-byo-cert --cert ./ingress.crt --key ./ingress.key

1.2.5.3. 轮转 gatekeeper Webhook 证书

完成以下步骤以轮转 gatekeeper Webhook 证书:

  1. 使用以下命令编辑包含证书的 secret:

    oc edit secret -n openshift-gatekeeper-system gatekeeper-webhook-server-cert
  2. 删除 data 部分中的以下内容: ca.crtca.keytls.crttls.key
  3. 使用以下命令删除 gatekeeper-controller-manager pod 来重启 gatekeeper Webhook 服务:

    oc delete pod -n openshift-gatekeeper-system -l control-plane=controller-manager

gatekeeper Webhook 证书被轮转。

1.2.5.4. 验证证书轮转

按照以下流程验证您的证书是否已轮转:

  1. 找到要检查的 secret。
  2. 检查 tls.crt 密钥以验证证书是否可用。
  3. 使用以下命令显示证书信息:

    oc get secret <your-secret-name> -n open-cluster-management -o jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -text -noout

    <your-secret-name> 替换为您要验证的 secret 的名称。如果需要,还要更新命名空间和 JSON 路径。

  4. 检查输出中的 Validity 详情。查看以下 Validity 示例:

    Validity
                Not Before: Jul 13 15:17:50 2023 GMT 1
                Not After : Jul 12 15:17:50 2024 GMT 2
    1
    Not Before 值是您轮转证书的日期和时间。
    2
    Not After 值是证书过期的日期和时间。

1.2.5.5. 列出 hub 集群受管证书

您可以查看在内部使用 OpenShift Service Serving 证书服务的 hub 集群受管证书列表。运行以下命令列出证书:

for ns in multicluster-engine open-cluster-management ; do echo "$ns:" ; oc get secret -n $ns -o custom-columns=Name:.metadata.name,Expiration:.metadata.annotations.service\\.beta\\.openshift\\.io/expiry | grep -v '<none>' ; echo ""; done

如需更多信息,请参阅附加资源部分中的 OpenShift Service Serving 证书部分。

:如果启用了可观察性,则还需要额外的命名空间来创建证书。

1.2.5.6. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.