说明替换证书将重启实例,请谨慎操作。
前提条件
- 已准备一台Linux系统的服务器。
- 实例已开启Kafka SASL_SSL。
步骤一:制作证书
步骤 1 登录Linux系统的服务器,执行以下命令,生成server.keystore.jks证书的孵化器。
keytool -genkey -keystore server.keystore.jks -alias localhost -validity 3650 -keyalg RSA
按照提示信息输入keystore密码。密码需要满足如下要求:
- 8~32个字符。
- 至少包含以下字符中的3种:大写字母、小写字母、数字、特殊字符`~!@#$%^&*()-_=+|[{}]:'",<.>/?和空格,并且不能以-开头。
- 非弱密码(如果不能确定哪些是弱密码,请在替换证书对话框中输入密码,系统会自动判定是否为弱密码)。
按照提示信息输入证书拥有者的信息,如姓名、单位、所在城市等。
步骤 2 执行以下命令,创建CA的认证证书。
openssl req -new -x509 -keyout ca-key -out ca-cert -days 3650
按照提示信息输入PEM密码。
按照提示信息输入证书拥有者的信息。
步骤 3 执行以下命令,通过CA创建一个服务器的Truststore证书,有了Truststore证书才可以进行证书有效性的检测。
keytool -keystore server.truststore.jks -alias CARoot -import -file ca-cert
按照提示信息输入服务器证书的Truststore密码。密码需要满足如下要求:
- 8~32个字符。
- 至少包含以下字符中的3种:大写字母、小写字母、数字、特殊字符`~!@#$%^&*()-_=+|[{}]:'",<.>/?和空格,并且不能以-开头。
- 非弱密码(如果不能确定哪些是弱密码,请在替换证书对话框中输入密码,系统会自动判定是否为弱密码)。
出现如下提示信息时,输入“y”。
Trust this certificate?
步骤 4 执行以下命令,通过CA创建一个客户端的Truststore证书。
keytool -keystore client.truststore.jks -alias CARoot -import -file ca-cert
按照提示信息输入客户端证书的Truststore密码。此密码用于客户端连接Kafka实例时,配置文件中“ssl.truststore.password”参数的值。
出现如下提示信息时,输入“y”。
Trust this certificate?
步骤 5 执行以下命令,为服务器证书签名。
- 导出服务器证书“server.cert-file”。
keytool -keystore server.keystore.jks -alias localhost -certreq -file server.cert-f
按照提示信息输入步骤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密码。
步骤 6 导出证书“server.keystore.jks”和“server.truststore.jks”到本地PC机。
图 证书目录
步骤二:替换证书
步骤 1 登录管理控制台。
步骤 2 在管理控制台右上角单击,选择区域。
说明此处请选择与您的应用服务相同的区域。
步骤 3 在管理控制台左上角单击,选择“企业中间件”-“分布式消息服务”-“Kafka专享版”,进入分布式消息服务Kafka专享版页面。
步骤 4 单击待替换证书的实例名称,进入实例详情页面。
步骤 5 在“连接信息 > SSL证书”后,单击“替换”,弹出“替换SSL证书”对话框。
图 连接信息
步骤 6 参考下表,设置替换SSL证书的参数。
图 替换SSL证书
表 替换SSL证书参数说明
参数名称 | 说明 |
---|---|
Key密码 | 输入制作证书中设置的keystore密码 |
Keystore密码 | 输入制作证书中设置的keystore密码 |
Keystore文件 | 导入“server.keystore.jks”证书 |
Truststore密码 | 输入服务端证书的Truststore密码 |
Truststore文件 | 导入“server.truststore.jks”证书 |
步骤 7 单击“确定”,弹出“替换SSL证书”对话框。
步骤 8 单击“确认”,完成证书的替换。
在“后台任务管理”页签,替换SSL证书任务的“状态”为“成功”时,表示替换证书成功。
说明证书替换成功后,在实例详情页单击“下载”,下载的证书为分布式消息服务Kafka提供的证书,并非您自己制作的证书。
步骤三:修改客户端配置文件
替换证书后,需要在客户端的“consumer.properties”和“producer.properties”文件中,分别修改“ssl.truststore.location”和“ssl.truststore.password”参数。
security.protocol=SASL_SSL
ssl.truststore.location=/opt/kafka_2.11-2.3.0/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为证书域名校验开关,为空则表示关闭。这里需要 保持关闭状态,必须设置为空 。