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 集群证书表:
Namespace | Secret 名称 | 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 的总结列表:
Namespace | Secret 名称(如果适用) |
---|---|
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. 其他资源
- 在受管集群中使用证书策略控制器来创建和管理证书策略。如需了解更多详细信息,请参阅证书策略控制器。
- 有关使用 SSL 证书安全连接到私有托管的 Git 服务器的更多详细信息,请参阅使用自定义 CA 证书进行安全 HTTPS 连接。
- 如需了解更多详细信息,请参阅 OpenShift Service Serving 证书。
- OpenShift Container Platform 默认入口被视为 hub 集群证书,请参阅替换 OpenShift 默认入口证书。
- 有关主题,请参阅证书概述。
- 返回到风险和合规页面。
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:
使用您的证书和私钥创建
observability-server-ca-certs
secret。运行以下命令:oc -n open-cluster-management-observability create secret tls observability-server-ca-certs --cert ./serverCACert.pem --key ./serverCAKey.pem
使用您的证书和私钥创建
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. 其他资源
- 返回本页的开头, Bringing Your Own (BYO) Certificate Authority (CA) certificates。
- 返回到管理证书概述。
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 管理的证书:
运行以下命令,删除与 Red Hat Advanced Cluster Management 管理证书关联的 secret:
oc delete secret -n <namespace> <secret> 1
- 1
- 将
<namespace>
和<secret>
替换为您要使用的值。
运行以下命令,重启与 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 证书。完成以下步骤:
使用以下命令检查可观察证书:
openssl x509 -noout -text -in ./observability.crt
-
将证书上的通用名称 (
CN
) 更改为alertmanager
。 -
使用 alertmanager 路由的主机名更改
csr.cnf
配置文件中的 SAN。 在
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 证书:
使用以下命令编辑包含证书的 secret:
oc edit secret -n openshift-gatekeeper-system gatekeeper-webhook-server-cert
-
删除
data
部分中的以下内容:ca.crt
、ca.key
、tls.crt
和tls.key
。 使用以下命令删除
gatekeeper-controller-manager
pod 来重启 gatekeeper Webhook 服务:oc delete pod -n openshift-gatekeeper-system -l control-plane=controller-manager
gatekeeper Webhook 证书被轮转。
1.2.5.4. 验证证书轮转
按照以下流程验证您的证书是否已轮转:
- 找到要检查的 secret。
-
检查
tls.crt
密钥以验证证书是否可用。 使用以下命令显示证书信息:
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 路径。检查输出中的
Validity
详情。查看以下Validity
示例:Validity Not Before: Jul 13 15:17:50 2023 GMT 1 Not After : Jul 12 15:17:50 2024 GMT 2
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. 其他资源
- OpenShift Service Serving 证书
- 管理证书概述
- 返回到此页面的开头,管理证书。