- 最新动态
- 功能总览
- 服务公告
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- 开发指南
- API参考
- SDK参考
-
常见问题
-
实例问题
- 为什么可用区不能选择2个?
- 创建实例时为什么无法查看子网和安全组等信息?
- 如何选择Kafka实例的存储空间?
- Kafka实例的超高IO和高IO如何选择?
- 如何选择Kafka实例存储容量阈值策略?
- Kafka服务端支持版本是多少?
- Kafka实例的ZK地址是什么?
- 创建的Kafka实例是集群模式么?
- Kafka实例是否支持修改访问端口?
- Kafka实例的SSL证书有效期多长?
- 如何将Kafka实例中的数据同步到另一个Kafka实例中?
- Kafka实例的SASL_SSL开关如何修改?
- SASL认证机制如何修改?
- 如何修改安全协议?
- 修改企业项目,是否会导致Kafka重启?
- 100MB/s的带宽怎样开启公网访问?
- Kafka服务和ZK是部署在相同的虚拟机中,还是分开部署?
- Kafka包周期实例支持删除吗?
- Kafka支持哪些加密套件?
- 购买实例时选择的单AZ,怎样可以扩展为多AZ?
- Kafka是否支持跨AZ容灾?已经购买的实例在哪里查看是否为跨AZ?
- Kafka支持磁盘加密吗?
- Kafka实例创建后,能修改VPC和子网吗?
- 有没有Kafka Stream的案例?
- Kafka实例版本可以升级吗?
- 怎样重新绑定公网IP?
- 实例规格变更问题
-
连接问题
- 选择和配置安全组
- Kafka实例是否支持公网访问?
- Kafka实例的连接地址默认有多少个?
- 是否支持跨Region访问?
- Kafka实例是否支持跨VPC访问?
- Kafka实例是否支持不同的子网?
- Kafka是否支持Kerberos认证,如何开启认证?
- Kafka实例是否支持无密码访问?
- 开启公网访问后,在哪查看公网IP地址?
- Kafka支持服务端认证客户端吗?
- 连接开启SASL_SSL的Kafka实例时,ssl truststore文件可以用PEM格式的吗?
- 下载的证书JKS和CRT有什么区别?
- Kafka支持哪个版本的TLS?
- Kafka实例连接数有限制吗?
- 客户端单IP连接的个数为多少?
- Kafka实例的内网连接地址可以修改吗?
- 不同实例中,使用的SSL证书是否一样?
- 为什么不建议使用Sarama客户端收发消息?
- Topic和分区问题
- 消费组问题
- 消息问题
-
Kafka Manager问题
- 登录Kafka Manager的账号是否可以设置为只读账号?
- 登录到Kafka Manager页面,为什么获取不到节点信息?
- Yikes! Insufficient partition balance when creating topic : projectman_project_enterprise_project Try again.
- Kafka Manager能否查询到消息的正文?
- Kafka Manager WebUI的端口能否修改?
- 在Kafka Manager上支持修改Topic的哪些属性?
- Kafka Manager和云监控显示的信息不一致
- Kafka Manager如何修改Topic的分区Leader?
- 实例版本在控制台和Kafka Manager上显示不一致?
- 为什么实例中存在默认名为__trace和__consumer_offsets的Topic?
- 客户端删除消费组后,在Kafka Manager中仍可以看到此消费组?
- 监控告警问题
- Kafka体验版使用说明
-
实例问题
- 故障排除
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
制作和替换Kafka JKS格式的SSL证书
SSL证书的作用是在客户端和Kafka实例进行数据传输时对数据加密传输,提高了数据的安全性。
Kafka客户端连接开启密文接入且Kafka安全协议为“SASL_SSL”的Kafka实例时,您可以使用分布式消息服务Kafka版提供的证书,也可以使用自己制作的证书。如果使用自己制作的证书,请参考本章节将分布式消息服务Kafka版提供的证书替换为自己的证书。
制作并替换证书为白名单特性,需要联系后台管理人员开通后方可使用。所有region都可以通过白名单开通此特性。
约束与限制
替换证书将重启实例,请谨慎操作。
前提条件
- 已准备一台Linux系统的服务器,并安装Java Development Kit 1.8.111或以上版本,配置JAVA_HOME与PATH环境变量。
- 实例已开启Kafka SASL_SSL。
步骤一:制作证书
- 登录Linux系统的服务器,执行以下命令,生成server.keystore.jks证书的孵化器。
keytool -genkey -keystore server.keystore.jks -alias localhost -validity 3650 -keyalg RSA
按照提示信息输入keystore密码,并记录此密码,此密码在后续步骤中会使用。
密码需要满足如下要求:
- 8~32个字符。
- 至少包含以下字符中的3种:大写字母、小写字母、数字、特殊字符`~!@#$%^&*()-_=+\|[{}]:'",<.>/?和空格,并且不能以-开头。
- 非弱密码(如果不能确定哪些是弱密码,请在替换证书对话框中输入密码,系统会自动判定是否为弱密码)。
按照提示信息输入证书拥有者的信息,包含姓名、单位、组织名称、所在城市、所在省、所在国家,示例如下。
[root@ecs-kafka ~]# keytool -genkey -keystore server.keystore.jks -alias localhost -validity 3650 -keyalg RSA Enter keystore password: Re-enter new password: What is your first and last name? [Unknown]: Tom What is the name of your organizational unit? [Unknown]: test What is the name of your organization? [Unknown]: test01 What is the name of your City or Locality? [Unknown]: nj What is the name of your State or Province? [Unknown]: js What is the two-letter country code for this unit? [Unknown]: xx Is CN=Tom, OU=test, O=test01, L=nj, ST=js, C=xx correct? [no]: y
- 执行以下命令,创建CA的认证证书。
openssl req -new -x509 -keyout ca-key -out ca-cert -days 3650
按照提示信息输入PEM密码,并记录此密码,此密码在后续步骤中会使用。
密码需要满足如下要求:4~1024个字符。
按照提示信息输入证书拥有者的信息,包含所在国家、所在省、所在城市、组织名称、单位、姓名、邮箱,示例如下。
[root@ecs-kafka ~]# openssl req -new -x509 -keyout ca-key -out ca-cert -days 3650 Generating a RSA private key ............................................................................................................................................+++++ ..........+++++ writing new private key to 'ca-key' Enter PEM pass phrase: Verifying - Enter PEM pass phrase: ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:xx State or Province Name (full name) []:js Locality Name (eg, city) [Default City]:nj Organization Name (eg, company) [Default Company Ltd]:test01 Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your server's hostname) []:Tom Email Address []:xx [root@ecs-kafka ~]#
- 执行以下命令,通过CA创建一个服务器的Truststore证书,有了Truststore证书才可以进行证书有效性的检测。
keytool -keystore server.truststore.jks -alias CARoot -import -file ca-cert
按照提示信息输入服务器证书的Truststore密码,并记录此密码。此密码在后续步骤中会使用。
密码需要满足如下要求:
- 8~32个字符。
- 至少包含以下字符中的3种:大写字母、小写字母、数字、特殊字符`~!@#$%^&*()-_=+\|[{}]:'",<.>/?和空格,并且不能以-开头。
- 非弱密码(如果不能确定哪些是弱密码,请在替换证书对话框中输入密码,系统会自动判定是否为弱密码)。
出现如下提示信息时,输入“y”。Trust this certificate?
- 执行以下命令,通过CA创建一个客户端的Truststore证书。
keytool -keystore client.truststore.jks -alias CARoot -import -file ca-cert
按照提示信息输入客户端证书的Truststore密码,并记录此密码。此密码用于客户端连接Kafka实例时,配置文件中“ssl.truststore.password”参数的值。
密码需要满足如下要求:
- 8~32个字符。
- 至少包含以下字符中的3种:大写字母、小写字母、数字、特殊字符`~!@#$%^&*()-_=+\|[{}]:'",<.>/?和空格,并且不能以-开头。
- 非弱密码(如果不能确定哪些是弱密码,请在替换证书对话框中输入密码,系统会自动判定是否为弱密码)。
出现如下提示信息时,输入“y”。Trust this certificate?
- 执行以下命令,为服务器证书签名。
- 导出服务器证书“server.cert-file”。
keytool -keystore server.keystore.jks -alias localhost -certreq -file server.cert-file
按照提示信息输入1中设置的keystore密码。
- 通过CA给服务器证书进行签名处理。
openssl x509 -req -CA ca-cert -CAkey ca-key -in server.cert-file -out server.cert-signed -days 3650 -CAcreateserial
按照提示信息输入2中设置的PEM密码。
- 将CA证书导入到服务器keystore。
keytool -keystore server.keystore.jks -alias CARoot -import -file ca-cert
按照提示信息输入1中设置的keystore密码。
出现如下提示信息时,输入“y”。Trust this certificate?
- 将已签名的服务器证书导入到服务器keystore。
keytool -keystore server.keystore.jks -alias localhost -import -file server.cert-signed
按照提示信息输入1中设置的keystore密码。
- 导出服务器证书“server.cert-file”。
- 导出证书“server.keystore.jks”、“server.truststore.jks”和“client.truststore.jks”到本地PC机。
“server.keystore.jks”和“server.truststore.jks”在后续步骤“替换证书”时,用来替换“Keystore文件”和“Truststore文件”。“client.truststore.jks”需要存放到客户端中,并记录存放路径,此路径用于客户端连接Kafka实例时,配置文件中“ssl.truststore.location”参数的值。图1 证书目录
步骤二:替换证书
- 登录管理控制台。
- 在管理控制台左上角单击
,选择Kafka实例所在的区域。
- 在管理控制台左上角单击
,选择“应用中间件 > 分布式消息服务Kafka版”,进入分布式消息服务Kafka专享版页面。
- 在左侧导航栏单击“Kafka实例”,进入Kafka实例列表页面。
- 单击待替换证书的实例名称,进入实例详情页面。
- 在“连接信息 > SSL证书”后,单击“替换”,弹出“替换SSL证书”对话框。
图2 连接信息
- 参考表1,设置替换SSL证书的参数。
图3 替换SSL证书
- 单击“确定”,弹出“替换SSL证书”对话框。
- 单击“确认”,完成证书的替换。
在“后台任务管理”页面,替换SSL证书任务的“状态”为“成功”时,表示替换证书成功。
证书替换成功后,在实例详情页单击“下载”,下载的证书为分布式消息服务Kafka版提供的证书,并非您自己制作的证书。
步骤三:修改客户端配置文件
替换证书后,需要在客户端的“consumer.properties”和“producer.properties”文件中,分别修改“ssl.truststore.location”和“ssl.truststore.password”参数。
security.protocol=SASL_SSL ssl.truststore.location=/opt/kafka_2.12-2.7.2/config/client.truststore.jks ssl.truststore.password=dms@kafka ssl.endpoint.identification.algorithm=
- ssl.truststore.location配置为client.truststore.jks证书的存放路径。
- ssl.truststore.password为客户端证书的Truststore密码。
- ssl.endpoint.identification.algorithm为证书域名校验开关,为空则表示关闭。这里需要保持关闭状态,必须设置为空。