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 签名的兼容服务器证书。(以 PEM 格式提供 X.509 证书。)
您可以将一个侦听器证书用于多个监听程序。
- 主题备用名称(SAN)为每个监听程序的证书指定。更多信息请参阅 第 10.7.2 节 “Kafka 监听器的服务器证书中的替代主题”。
如果您不使用自签名证书,您可以提供一个在证书中包含整个 CA 链的证书。
如果为监听程序配置了 TLS 加密(tls: true),则只能使用 brokerCertChainAndKey 属性。
流程
创建包含私钥和服务器证书的
Secret:oc create secret generic my-secret --from-file=my-listener-key.key --from-file=my-listener-certificate.crt
oc create secret generic my-secret --from-file=my-listener-key.key --from-file=my-listener-certificate.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑集群的
Kafka资源。将监听程序配置为使用
configuration.brokerCertChainAndKey属性中的Secret、证书文件和私钥文件。启用 TLS
加密的负载均衡器外部监听程序配置示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow TLS 侦听器配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用新配置以创建或更新资源:
oc apply -f kafka.yaml
oc apply -f kafka.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 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 的主机名。
通配符示例
非通配符示例
10.7.2.2. 外部监听程序 SAN 示例 复制链接链接已复制到粘贴板!
对于启用了 TLS 加密的外部监听程序,您需要在证书中指定的主机名取决于外部监听程序 类型。
| 外部监听程序类型 | 在 SANs 中,指定… |
|---|---|
|
|
所有 Kafka 您可以使用匹配的通配符名称。 |
|
|
所有 Kafka 代理 您可以使用匹配的通配符名称。 |
|
| Kafka 代理 Pod 可能调度到的所有 OpenShift worker 节点的地址。 您可以使用匹配的通配符名称。 |