10.7. Kafka 侦听器证书


您可以为启用 TLS 加密的任何监听程序提供自己的服务器证书和私钥。这些用户提供的证书称为 Kafka 侦听器证书

提供 Kafka 侦听器证书允许您利用现有的安全基础架构,如您组织的私有 CA 或公共 CA。Kafka 客户端需要信任用于为监听程序证书签名的 CA。

在需要时,您必须手动续订 Kafka 侦听器证书。

10.7.1. 提供您自己的 Kafka 侦听器证书

此流程演示了如何将侦听器配置为使用您自己的私钥和服务器证书,称为 Kafka 侦听器证书

您的客户端应用程序应使用 CA 公钥作为可信证书,以验证 Kafka 代理的身份。

先决条件

  • OpenShift 集群。
  • Cluster Operator 正在运行。
  • 对于每个监听程序,由外部 CA 签名的兼容服务器证书。

流程

  1. 创建包含私钥和服务器证书的 Secret

    oc create secret generic my-secret --from-file=my-listener-key.key --from-file=my-listener-certificate.crt
    Copy to Clipboard Toggle word wrap
  2. 编辑集群的 Kafka 资源。配置侦听器,以在 configuration.brokerCertChainAndKey 属性中使用 Secret、证书文件和私钥文件。

    启用 TLS 加密的 负载均衡器外部监听程序配置示例

    # ...
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
      - name: external
        port: 9094
        type: loadbalancer
        tls: true
        authentication:
          type: tls
        configuration:
          brokerCertChainAndKey:
            secretName: my-secret
            certificate: my-listener-certificate.crt
            key: my-listener-key.key
    # ...
    Copy to Clipboard Toggle word wrap

    TLS 侦听器配置示例

    # ...
    listeners:
      - name: plain
        port: 9092
        type: internal
        tls: false
      - name: tls
        port: 9093
        type: internal
        tls: true
        authentication:
          type: tls
        configuration:
          brokerCertChainAndKey:
            secretName: my-secret
            certificate: my-listener-certificate.crt
            key: my-listener-key.key
    # ...
    Copy to Clipboard Toggle word wrap

  3. 应用新配置以创建或更新资源:

    oc apply -f kafka.yaml
    Copy to Clipboard Toggle word wrap

    Cluster Operator 启动 Kafka 集群的滚动更新,这会更新监听程序的配置。

    注意

    如果您在已由 TLS 或外部监听程序使用的 Secret 中更新 Kafka 侦听器证书,也会启动滚动更新。

10.7.2. Kafka 监听器的服务器证书中的替代主题

要将 TLS 主机名验证用于您自己的 Kafka 侦听器证书,您必须为每个监听器使用正确的主题备用名称(SAN)。证书 SAN 必须为以下项指定主机名:

  • 集群中的所有 Kafka 代理
  • Kafka 集群 bootstrap 服务

如果 CA 支持通配符证书,您可以使用通配符证书。

10.7.2.1. TLS 侦听器 SAN 示例

使用以下示例,帮助您为 TLS 监听器在证书中指定 SAN 的主机名。

通配符示例

//Kafka brokers
*.<cluster-name>-kafka-brokers
*.<cluster-name>-kafka-brokers.<namespace>.svc

// Bootstrap service
<cluster-name>-kafka-bootstrap
<cluster-name>-kafka-bootstrap.<namespace>.svc
Copy to Clipboard Toggle word wrap

非通配符示例

// Kafka brokers
<cluster-name>-kafka-0.<cluster-name>-kafka-brokers
<cluster-name>-kafka-0.<cluster-name>-kafka-brokers.<namespace>.svc
<cluster-name>-kafka-1.<cluster-name>-kafka-brokers
<cluster-name>-kafka-1.<cluster-name>-kafka-brokers.<namespace>.svc
# ...

// Bootstrap service
<cluster-name>-kafka-bootstrap
<cluster-name>-kafka-bootstrap.<namespace>.svc
Copy to Clipboard Toggle word wrap

10.7.2.2. 外部监听程序 SAN 示例

对于启用了 TLS 加密的外部监听程序,您需要在证书中指定的主机名取决于外部监听程序 类型

Expand
表 10.15. 每种类型的外部监听程序的 SAN
外部监听程序类型在 SANs 中,指定…​

Route(路由)

所有 Kafka 代理 路由和 bootstrap 路由 地址。

您可以使用匹配的通配符名称。

loadbalancer

所有 Kafka 代理 负载均衡器和 bootstrap 负载均衡器地址 的地址

您可以使用匹配的通配符名称。

NodePort

Kafka 代理 Pod 可能调度到的所有 OpenShift worker 节点的地址。

您可以使用匹配的通配符名称。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat