10.7. Kafka 侦听器证书


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

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

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

10.7.1. 为 TLS 加密提供自己的 Kafka 侦听器证书

监听器提供对 Kafka 代理的客户端访问。在 Kafka 资源中配置监听程序,包括使用 TLS 进行客户端访问所需的配置。

默认情况下,侦听程序使用由 AMQ Streams 生成的内部 CA (证书颁发机构)证书签名的证书。Cluster Operator 创建 Kafka 集群时会生成 CA 证书。当您为 TLS 配置客户端时,将 CA 证书添加到其信任存储中,以验证 Kafka 集群。您还可以安装和使用自己的 CA 证书。或者,您可以使用 brokerCertChainAndKey 属性配置监听程序,并使用自定义服务器证书。

brokerCertChainAndKey 属性允许您在监听程序级别使用您自己的自定义证书访问 Kafka 代理。您可以使用自己的私钥和服务器证书创建 secret,然后在监听器的 brokerCertChainAndKey 配置中指定密钥和证书。您可以使用由公共(外部)CA 或私有 CA 签名的证书。如果由公共 CA 签名,您通常不需要将其添加到客户端的信任存储配置中。自定义证书不由 AMQ Streams 管理,因此您需要手动续订它们。

注意

侦听器证书仅用于 TLS 加密和服务器身份验证。它们不用于 TLS 客户端身份验证。如果要也将您自己的证书用于 TLS 客户端身份验证,则必须 安装和使用自己的客户端 CA

先决条件

  • Cluster Operator 正在运行。
  • 每个监听程序都需要以下内容:

如果您不使用自签名证书,您可以提供一个在证书中包含整个 CA 链的证书。

如果为监听程序配置了 TLS 加密(tls: true),则只能使用 brokerCertChainAndKey 属性。

流程

  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
        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
        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 集群的滚动更新,这会更新监听程序的配置。

    注意

    如果您在已由监听程序使用的 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