9.3. 证书续订和有效期


集群 CA 和客户端 CA 证书只在有限的时间段内有效,称为有效期。这通常定义自生成证书以来的天数。

对于 Cluster Operator 自动创建的 CA 证书,您可以配置以下的有效性周期:

  • Kafka.spec.clusterCa.validityDays中的集群 CA 证书
  • Clients CA certificates in Kafka.spec.clientsCa.validityDays

两个证书的默认有效期为 365 天。手动安装的 CA 证书应定义自己的有效期。

当 CA 证书过期时,仍信任该证书的组件和客户端不接受来自其证书由 CA 私钥签名的对等点的连接。组件和客户端需要信任新的 CA 证书。

要允许在不丢失服务的情况下续订 CA 证书,Cluster Operator 会在旧的 CA 证书过期前启动证书续订。

您可以配置 Cluster Operator 创建的证书的续订周期:

  • Kafka.spec.clusterCa.renewalDays中的集群 CA 证书
  • Clients CA certificates in Kafka.spec.clientsCa.renewalDays

两个证书的默认续订周期为 30 天。

续订周期从当前证书的到期日期后测量。

根据续订周期的有效期

Not Before                                     Not After
    |                                              |
    |<--------------- validityDays --------------->|
                              <--- renewalDays --->|

要在创建 Kafka 集群后更改有效期和续订周期,您可以配置并应用 Kafka 自定义资源,并 手动更新 CA 证书。如果您不手动更新证书,则在下次自动更新证书时将使用新的周期。

证书有效期和续订周期的 Kafka 配置示例

apiVersion: kafka.strimzi.io/v1beta2
kind: Kafka
# ...
spec:
# ...
  clusterCa:
    renewalDays: 30
    validityDays: 365
    generateCertificateAuthority: true
  clientsCa:
    renewalDays: 30
    validityDays: 365
    generateCertificateAuthority: true
# ...

在续订期间,Cluster Operator 的行为取决于集群 CA 和客户端 CA 的 generateCertificateAuthority 证书生成属性的设置。

true
如果属性设为 true,Cluster Operator 会自动生成 CA 证书,并在续订周期内自动更新。
false
如果属性设为 false,Cluster Operator 不会生成 CA 证书。如果要安装自己的证书,则使用此选项。

9.3.1. 使用自动生成的 CA 证书的续订过程

Cluster Operator 在续订 CA 证书时按照以下顺序执行以下进程:

  1. 生成一个新的 CA 证书,但保留现有的密钥。

    新证书将旧证书替换为对应 Secret 中的名称 ca.crt

  2. 生成新的客户端证书(用于 ZooKeeper 节点、Kafka 代理和实体 Operator)。

    这并不严格是必需的,因为签名密钥没有改变,但它保留客户端证书的有效性周期与 CA 证书同步。

  3. 重启 ZooKeeper 节点,以便它们信任新的 CA 证书并使用新的客户端证书。
  4. 重启 Kafka 代理,以便它们信任新的 CA 证书并使用新的客户端证书。
  5. 重启主题和用户 Operator,以便它们信任新的 CA 证书并使用新的客户端证书。

    用户证书由客户端 CA 签名。用户 Operator 生成的用户证书会在客户端 CA 续订时续订。

9.3.2. 客户端证书续订

Cluster Operator 不知道使用 Kafka 集群的客户端应用程序。

当连接到集群时,并确保它们正确运行,客户端应用程序必须:

  • 信任 <cluster> - cluster-ca-cert Secret 中发布的集群 CA 证书。
  • 使用 < user-name&gt; Secret 中发布的凭证连接到集群。

    User Secret 以 PEM 和 PKCS #12 格式提供凭证,或者在使用 SCRAM-SHA 身份验证时提供密码。User Operator 在创建用户时会创建用户凭证。

您必须确保客户端在证书续订后继续工作。续订过程取决于客户端的配置方式。

如果要手动置备客户端证书和密钥,您必须生成新的客户端证书,并确保客户端在续订周期内使用新证书。在续订周期结束时无法执行此操作可能会导致客户端应用程序无法连接到集群。

注意

对于在同一 OpenShift 集群和命名空间中运行的工作负载,Secret 可以挂载为卷,因此客户端 Pod 可以从 Secret 的当前状态构建其密钥存储和信任存储。有关此过程的详情,请参阅配置内部客户端以信任集群 CA

9.3.3. 手动续订 Cluster Operator 生成的 CA 证书

Cluster Operator 会自动续订其相应证书续订周期开始时,集群和客户端 CA 证书会自动续订。但是,您可以使用 strimzi.io/force-renew 注解在证书续订周期开始前手动续订其中一个或两个证书。出于安全原因,您可能执行此操作,或者更改了证书的续订或有效期

更新的证书使用与旧证书相同的私钥。

注意

如果您使用自己的 CA 证书,则无法使用 force-renew 注解。相反,请按照流程 续订您自己的 CA 证书

先决条件

  • Cluster Operator 正在运行。
  • 安装 CA 证书和私钥的 Kafka 集群。

流程

  1. strimzi.io/force-renew 注解应用到包含您要更新的 CA 证书的 Secret

    Expand
    表 9.13. 强制续订证书的 Secret 的注解
    证书Secret注解命令

    集群 CA

    KAFKA-CLUSTER-NAME-cluster-ca-cert

    oc annotate secret KAFKA-CLUSTER-NAME-cluster-ca-cert strimzi.io/force-renew=true

    客户端 CA

    KAFKA-CLUSTER-NAME-clients-ca-cert

    oc annotate secret KAFKA-CLUSTER-NAME-clients-ca-cert strimzi.io/force-renew=true

    在下一次协调时,Cluster Operator 将为您注解的 Secret 生成一个新的 CA 证书。如果配置了维护时间窗,Cluster Operator 将在下次维护时间窗内第一次协调时生成新的 CA 证书。

    客户端应用程序必须重新加载 Cluster Operator 更新的集群和客户端 CA 证书。

  2. 检查 CA 证书有效的周期:

    例如,使用 openssl 命令:

    oc get secret CA-CERTIFICATE-SECRET -o 'jsonpath={.data.CA-CERTIFICATE}' | base64 -d | openssl x509 -subject -issuer -startdate -enddate -noout

    CA-CERTIFICATE-SECRETSecret 的名称,对于集群 CA 证书是 KAFKA-CLUSTER-NAME-cluster-ca-cert,对于客户端 CA 证书是 KAFKA-CLUSTER-NAME-clients-ca-cert

    ca -CERTIFICATE 是 CA 证书的名称,如 jsonpath={.data.ca\.crt}

    该命令返回一个 notBeforenotAfter 日期,这是 CA 证书的有效性周期。

    例如,对于集群 CA 证书:

    subject=O = io.strimzi, CN = cluster-ca v0
    issuer=O = io.strimzi, CN = cluster-ca v0
    notBefore=Jun 30 09:43:54 2020 GMT
    notAfter=Jun 30 09:43:54 2021 GMT
  3. 从 Secret 中删除旧证书。

    当组件正在使用新证书时,旧的证书可能仍然处于活动状态。删除旧证书以移除任何潜在的安全风险。

您可以替换由 Cluster Operator 生成的集群 CA 和客户端 CA 证书使用的私钥。当替换私钥时,Cluster Operator 会为新私钥生成一个新的 CA 证书。

注意

如果您使用自己的 CA 证书,则无法使用 force-replace 注解。相反,请按照流程 续订您自己的 CA 证书

先决条件

  • Cluster Operator 正在运行。
  • 安装 CA 证书和私钥的 Kafka 集群。

流程

  • strimzi.io/force-replace 注解应用到包含您要更新的私钥的 Secret

    Expand
    表 9.14. 替换私钥的命令
    的私钥Secret注解命令

    集群 CA

    cluster-name-cluster-ca

    oc annotate secret CLUSTER-NAME-cluster-ca strimzi.io/force-replace=true

    客户端 CA

    cluster-name-clients-ca

    oc annotate secret CLUSTER-NAME-clients-ca strimzi.io/force-replace=true

在下一次协调时,Cluster Operator 将:

  • 为您注解的 Secret 生成新私钥
  • 生成新的 CA 证书

如果配置了维护时间窗,Cluster Operator 将在下次维护时间窗口中第一次协调时生成新的私钥和 CA 证书。

客户端应用程序必须重新加载 Cluster Operator 更新的集群和客户端 CA 证书。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部