11.3.5. 续订您自己的 CA 证书
此流程描述了如何续订您自己安装的 CA 证书和密钥,而不是使用 Cluster Operator 生成的证书。
如果您使用自己的证书,Cluster Operator 不会自动续订它们。因此,您必须在证书的续订期内遵循此步骤,以替换即将过期的 CA 证书。
该程序描述了 PEM 格式的 CA 证书的续订。您还可以使用 PKCS #12 格式的证书。
先决条件
- Cluster Operator 正在运行。
- 已安装您自己的 CA 证书和私钥。
- 您有新的集群和客户端 X.509 证书和密钥,格式为 PEM。
它们可使用 openssl
命令生成,例如:
openssl req -x509 -new -days NUMBER-OF-DAYS-VALID --nodes -out ca.crt -keyout ca.key
流程
在
Secret
中检查当前 CA 证书的详情:oc describe secret CA-CERTIFICATE-SECRET
ca-CERTIFICATE-SECRET 是
Secret
的名称,这是用于集群 CA证书的 KAFKA-CLUSTER-NAME-cluster-ca-cert
和用于客户端 CA 证书的KAFKA-CLUSTER-NAME-clients-ca-cert
。创建一个目录,使其包含 secret 中的现有 CA 证书。
mkdir new-ca-cert-secret cd new-ca-cert-secret
获取您要续订的每个 CA 证书的 secret:
oc get secret CA-CERTIFICATE-SECRET -o 'jsonpath={.data.CA-CERTIFICATE}' | base64 -d > CA-CERTIFICATE
将 CA-CERTIFICATE 替换为每个 CA 证书的名称。
将旧的
ca.crt
文件重命名为ca-DATE. crt
,其中 DATE 是证书到期日期,格式为 YEAR -MONTH-DAYTHOUR-MINUTE-SECONDZ。例如
ca-2018-09-27T17-32-00Z.crt
。mv ca.crt ca-$(date -u -d$(openssl x509 -enddate -noout -in ca.crt | sed 's/.*=//') +'%Y-%m-%dT%H-%M-%SZ').crt
将您的新 CA 证书复制到该目录,并将其命名为
ca.crt
:cp PATH-TO-NEW-CERTIFICATE ca.crt
将您的 CA 证书放在对应的
Secret 中
。删除现有的 secret:
oc delete secret CA-CERTIFICATE-SECRET
CA-CERTIFICATE-SECRET 是
Secret
的名称,在第一步中返回。忽略任何"Not Exists"错误。
重新创建 secret:
oc create secret generic CA-CERTIFICATE-SECRET --from-file=.
删除您创建的目录:
cd .. rm -r new-ca-cert-secret
将您的 CA 密钥放在对应的
Secret 中
。删除现有的 secret:
oc delete secret CA-KEY-SECRET
ca-KEY-SECRET 是 CA 密钥的名称,这是用于集群 CA 密钥的
KAFKA-CLUSTER-NAME-cluster-ca
,用于客户端 CA 密钥的KAFKA-CLUSTER-NAME-clients-ca
。使用新 CA 密钥重新创建 secret:
oc create secret generic CA-KEY-SECRET --from-file=ca.key=CA-KEY-SECRET-FILENAME
使用 labels
strimzi.io/kind=Kafka
和strimzi.io/cluster=KAFKA-CLUSTER-NAME
标记 secret:oc label secret CA-CERTIFICATE-SECRET strimzi.io/kind=Kafka strimzi.io/cluster=KAFKA-CLUSTER-NAME oc label secret CA-KEY-SECRET strimzi.io/kind=Kafka strimzi.io/cluster=KAFKA-CLUSTER-NAME