SSL证书算法升级说明

更新时间:
复制 MD 格式

您可以根据安全需求调整您非Serverless实例的SSL证书算法位数。

前提条件

您已购买云消息队列 Kafka 版公网实例,且实例处于服务中状态。

背景信息

您的实例开启公网时,会启动SSL相关的端口,在云消息队列 Kafka 版控制台配置信息页面可以看到SSL证书算法位数。请根据您的安全需求按需选择是否升级,如果需要升级可以通过以下方案将实例的SSL证书算法位数升级至4096。

重要
  • 仅在云消息队列 Kafka 版的实例配置信息页面修改SSL证书算法位数,将会导致客户端无法使用,升级前请按照操作步骤下载新版证书,修改客户端证书配置后重启。

  • 若您的实例为Serverless实例,当开启公网时,使用的SSL证书算法位数默认为4096位,不支持变更。

SSL证书下载

  • 实例尚未被部署:Java语言请下载only.4096.client.truststore.jks,其他语言请在SDK列表中下载对应语言的only-4096-ca-cert。

  • 实例已部署且实例的SSL证书算法位数为1024:Java语言请下载kafka.client.truststore.jks,其他语言请在SDK列表中下载对应语言的ca-cert.pem。

  • 实例已部署且实例的SSL证书算法位数需要从1024升级至4096:Java语言请下载mix.4096.client.truststore.jks,其他语言请在SDK列表中下载对应语言的mix-4096-ca-cert。mix.4096.client.truststore.jksmix-4096-ca-cert同时包含1024位和4096位的SSL证书,无论服务端是1024位还是4096位,都可以正常使用。

操作步骤

  1. 根据您的客户端语言类型,下载对应的4096位算法的SSL证书。下载链接,请参见上文的SSL证书下载章节。

  2. 将下载的证书替换到您的客户端,然后重启客户端。

  3. 在实例配置页面修改SSL证书算法位数为4096。详细操作,请参见变更消息配置

SSL 连接故障排查

完成证书替换后,如果客户端连接 SSL 接入点时出现握手失败或证书校验失败,请按以下步骤排查。

handshake failed(握手失败)

连接 Kafka SSL 时出现 handshake failednodename nor servname provided 错误,请按以下步骤排查:

  1. 检查证书位数与实例配置是否一致。在 Kafka 管理控制台的实例详情页的配置信息页签查看 kafka.ssl.bit 参数,下载对应位数的 CA 证书。

  2. 确保客户端信任 Kafka 实例的 CA 证书。通过控制台下载 CA 证书,或执行以下命令导出并核对:

    openssl s_client -connect <接入点地址>:9093 -showcerts

certificate verify failed(Hostname mismatch)

连接 Kafka SSL 时出现 certificate verify failedHostname mismatch 错误,原因是 SSL 接入点使用 IP 地址,而 Kafka 实例的证书 CN 为 AliKafka,IP 地址与证书不匹配。在客户端配置中禁用主机名验证:

  • Java kafka-clients:设置 ssl.endpoint.identification.algorithm 为空字符串。

  • Python kafka-python:设置 ssl_check_hostname=False

  • Python ssl 模块:设置 context.check_hostname=False

confluent-kafka(librdkafka)不支持直接设置 ssl.endpoint.identification.algorithm,需要通过自定义 SSL context 实现。

说明

禁用主机名验证会降低安全性。生产环境中请优先配置正确的 CA 证书和域名解析,谨慎使用禁用验证的方案。