第 17 章 管理 TLS 证书


Streams for Apache Kafka 支持 TLS 用于 Apache Kafka 组件的 Kafka 和 Streams 之间的加密通信。

在 KRaft 模式下使用 Kafka 时,Apache Kafka 的流为以下组件之间的通信建立加密的 TLS 连接:

  • Kafka 代理
  • Kafka 控制器
  • Kafka 代理和控制器
  • Apache Kafka operator 和 Kafka 的流
  • Cruise Control 和 Kafka 代理
  • Kafka Exporter 和 Kafka 代理

客户端和 Kafka 代理之间的连接使用监听程序,您必须将它们配置为使用 TLS 加密通信。您可以在 Kafka 自定义资源中配置这些监听程序,每个监听程序名称和端口号必须在集群中唯一。Kafka 代理和 Kafka 客户端之间的通信会根据为监听程序配置 tls 属性的方式进行加密。如需更多信息,请参阅 第 14 章 设置 Kafka 集群的客户端访问权限

下图显示了安全通信的连接。

图 17.1. KRaft 型 Kafka 通信由 TLS 加密保护

图中显示的端口如下:

control plane 侦听器(9090)
端口 9090 上的内部 control plane 侦听器有助于 Kafka 控制器和代理到控制器通信之间的 interbroker 通信。另外,Cluster Operator 通过监听程序与控制器通信。Kafka 客户端无法访问此监听程序。
复制监听程序(9091)
代理之间的数据复制,以及从 Apache Kafka operator、Cruise Control 和 Kafka Exporter 的 Streams 到代理的内部连接,使用端口 9091 上的复制监听程序。Kafka 客户端无法访问此监听程序。
客户端连接(9092 或更高版本)的监听程序
对于 TLS 加密的通信(通过配置监听程序),内部和外部客户端连接到 Kafka 代理。外部客户端(producers 和 consumers)通过公告的监听程序端口连接到 Kafka 代理。
重要

当为客户端配置监听程序对代理的访问时,您可以使用端口 9092 或更高版本(9093、9094 等),但有一些例外。侦听程序无法配置为使用为 interbroker 通信(9090 和 9091)、Prometheus 指标(9404)和 JMX (Java 管理扩展)监控(9999)保留的端口。

如果您使用 ZooKeeper 进行集群管理,则 ZooKeeper 和 Kafka 代理和 Apache Kafka operator 的 Streams 之间有 TLS 连接。

下图显示了使用 ZooKeeper 时安全通信的连接。

图 17.2. Kafka 和 ZooKeeper 通信由 TLS 加密保护

ZooKeeper 端口如下:

ZooKeeper Port (2181)
用于连接 Kafka 代理的 ZooKeeper 端口。另外,Cluster Operator 通过这个端口与 ZooKeeper 通信。
ZooKeeper 间的通信端口(2888)
ZooKeeper 端口,用于在 ZooKeeper 节点之间进行干预。
ZooKeeper 领导选举端口(3888)
ZooKeeper 端口,用于 ZooKeeper 集群中的节点间的领导选举机制。

17.1. 内部集群 CA 和客户端 CA

要支持加密,Apache Kafka 组件的每个流都需要自己的私钥和公钥证书。所有组件证书都由名为 集群 CA 的内部 CA (证书颁发机构)签名。

CA (证书授权机构)证书由 Cluster Operator 生成,以验证组件和客户端的身份。

同样,每个使用 mTLS 连接到 Apache Kafka 的 Kafka 客户端应用程序都需要使用私钥和证书。第二个名为 客户端 CA 的内部 CA 用于为 Kafka 客户端签名证书。

集群 CA 和客户端 CA 都有一个自签名公钥证书。

Kafka 代理被配置为信任由集群 CA 或客户端 CA 签名的证书。客户端不需要连接到的组件,如 ZooKeeper,只信任由集群 CA 签名的证书。除非外部监听程序的 TLS 加密被禁用,否则客户端应用程序必须信任由集群 CA 签名的证书。对于执行 mTLS 验证的客户端应用程序,这也也是如此。

默认情况下,Apache Kafka 的 Streams 会自动生成和更新集群 CA 或客户端 CA 发布的 CA 证书。您可以使用 Kafka.spec.clusterCaKafka.spec.clientsCa 属性来配置这些 CA 证书的管理。

注意

如果您不想使用 Cluster Operator 生成的 CA,您可以安装自己的集群和客户端 CA 证书。您提供的任何证书都不会由 Cluster Operator 更新。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat