• 沒有找到結果。

操作场景

SSL双向认证是指在通信认证时,将同时验证客户端和服务端的证书,以确保通信中涉 及的双方都是受信任的。

开启SSL双向认证,主要用于对安全性要求较高的场景。

SSL双向认证为白名单特性,需要联系后台管理人员开通后方可使用。

说明

开启/关闭SSL双向认证将重启实例,请谨慎操作。

前提条件

● 已准备一台Linux系统的服务器。

● 实例已开启Kafka SASL_SSL。

配置 SSL 双向认证流程

4-29 配置 SSL 双向认证流程图

步骤一:制作客户端验证服务端的证书

步骤1 登录Linux系统的服务器,执行以下命令,生成server.keystore.jks证书的孵化器。

keytool -genkey -keystore server.keystore.jks -alias localhost -validity 3650 -keyalg RSA

按照提示信息输入keystore密码。密码需要满足如下要求:

● 8~32个字符。

● 至少包含以下字符中的3种:大写字母、小写字母、数字、特殊字符`~!@#$

%^&*()-_=+\|[{}]:'",<.>/?和空格,并且不能以-开头。

● 非弱密码(如果不能确定哪些是弱密码,请在开启SSL双向认证对话框中输入密 码,系统会自动判定是否为弱密码)。

按照提示信息输入证书拥有者的信息,如姓名、单位、所在城市等。

步骤2 执行以下命令,创建CA的认证证书。

openssl req -new -x509 -keyout ca-key -out ca-cert -days 3650

按照提示信息输入PEM密码。

按照提示信息输入证书拥有者的信息。

步骤3 执行以下命令,从步骤1中生成的server.keystore.jks中导出证书,并命名为

“server.crt”。

keytool -keystore server.keystore.jks -alias localhost -certreq -file server.crt

按照提示信息输入keystore密码。

步骤4 执行以下命令,使用CA的私钥对server.crt进行签名,并为签名后的证书命名为

“server-signed.crt”。

openssl x509 -req -CA ca-cert -CAkey ca-key -in server.crt -out server-signed.crt -days 3650 -CAcreateserial

按照提示信息输入步骤2中的PEM密码。

步骤5 执行以下命令,将CA证书和“server-signed.crt”导入秘钥仓库。

keytool -keystore server.keystore.jks -alias CARoot -import -file ca-cert

keytool -keystore server.keystore.jks -alias localhost -import -file server-signed.crt

按照提示信息输入keystore密码。

步骤6 执行以下命令,使客户端信任服务端证书。

keytool -keystore client.truststore.jks -alias CARoot -import -file ca-cert

按照提示信息输入client.truststore.jks的密码。密码需要满足如下要求:

● 8~32个字符。

● 至少包含以下字符中的3种:大写字母、小写字母、数字、特殊字符`~!@#$

%^&*()-_=+\|[{}]:'",<.>/?和空格,并且不能以-开头。

● 非弱密码(如果不能确定哪些是弱密码,请在开启SSL双向认证对话框中输入密 码,系统会自动判定是否为弱密码)。

步骤7 导出“client.truststore.jks”和“server.keystore.jks”证书到本地PC机。

----结束

步骤二:制作服务端验证客户端的证书

步骤1 登录Linux系统的服务器,执行以下命令,生成client.keystore.jks证书的孵化器。

keytool -genkey -keystore client.keystore.jks -alias localhost -validity 3650 -keyalg RSA

按照提示信息输入keystore密码。密码需要满足如下要求:

● 8~32个字符。

● 至少包含以下字符中的3种:大写字母、小写字母、数字、特殊字符`~!@#$

%^&*()-_=+\|[{}]:'",<.>/?和空格,并且不能以-开头。

● 非弱密码(如果不能确定哪些是弱密码,请在开启SSL双向认证对话框中输入密 码,系统会自动判定是否为弱密码)。

按照提示信息输入证书拥有者的信息,如姓名、单位、所在城市等。

步骤2 执行以下命令,创建CA的认证证书。

openssl req -new -x509 -keyout ca-key -out ca-cert -days 3650

按照提示信息输入PEM密码。

按照提示信息输入证书拥有者的信息。

步骤3 执行以下命令,从步骤1中生成的client.keystore.jks中导出证书,并命名为

“client.crt”。

keytool -keystore client.keystore.jks -alias localhost -certreq -file client.crt

按照提示信息输入keystore密码。

步骤4 执行以下命令,使用CA的私钥对client.crt进行签名,并为签名后的证书命名为

“client-signed.crt”。

openssl x509 -req -CA ca-cert -CAkey ca-key -in client.crt -out client-signed.crt -days 3650 -CAcreateserial

按照提示信息输入步骤2中的PEM密码。

步骤5 执行以下命令,将CA证书和“client-signed.crt”导入秘钥仓库。

keytool -keystore client.keystore.jks -alias CARoot -import -file ca-cert

keytool -keystore client.keystore.jks -alias localhost -import -file client-signed.crt

按照提示信息输入keystore密码。

步骤6 执行以下命令,使服务端信任客户端证书。

keytool -keystore server.truststore.jks -alias CARoot -import -file ca-cert

按照提示信息输入server.truststore.jks的密码。

密码需要满足如下要求:

● 8~32个字符。

● 至少包含以下字符中的3种:大写字母、小写字母、数字、特殊字符`~!@#$

%^&*()-_=+\|[{}]:'",<.>/?和空格,并且不能以-开头。

● 非弱密码(如果不能确定哪些是弱密码,请在开启SSL双向认证对话框中输入密 码,系统会自动判定是否为弱密码)。

步骤7 导出“server.truststore.jks”和“client.keystore.jks”证书到本地PC机。

----结束

步骤三:开启 SSL 双向认证

步骤1 登录管理控制台。

步骤2 在管理控制台左上角单击 ,选择区域。

说明

此处请选择与您的应用服务相同的区域。

步骤3 在管理控制台左上角单击 ,选择“应用中间件 > 分布式消息服务Kafka版”,进入 分布式消息服务Kafka专享版页面。

步骤4 单击待开启SSL双向认证的实例名称,进入实例详情页面。

步骤5 在“高级配置 > SSL双向认证”后,单击 ,开启SSL双向认证。

步骤6 在弹出的“SSL双向认证”对话框中,参考表4-2,设置开启SSL双向认证的参数。

4-30 开启 SSL 双向认证

4-2 开启 SSL 双向认证参数说明

参数名称 说明

Key密码 输入server.keystore.jks的密码 Keystore密码 输入server.keystore.jks的密码 Keystore文件 导入“server.keystore.jks”证书 Truststore密码 输入server.truststore.jks的密码 Truststore文件 导入“server.truststore.jks”证书

须知

开启SSL双向认证将重启实例,请谨慎操作。

步骤7 单击“确定”,完成开启SSL双向认证。

----结束

步骤四:修改客户端配置文件

开启SSL双向认证后,需要在客户端的“consumer.properties”和

“producer.properties”文件中,分别修改服务端证书配置,并增加客户端证书配置。

security.protocol=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.keystore.location=/var/private/ssl/kafka.client.keystore.jks ssl.keystore.password=test123

ssl.key.password=test123

● security.protocol配置证书协议类型,开启SSL双向认证时,必须设置为SSL。

● ssl.trustsore.location配置为client.truststore.jks证书的存放路径。

● ssl.truststore.password为client.truststore.jks的密码。

● ssl.endpoint.identification.algorithm为证书域名校验开关,为空则表示关闭。这 里需要保持关闭状态,必须设置为空。

● ssl.keystore.location配置为client.keystore.jks证书的存放路径。

● ssl.keystore.password配置为client.keystore.jks的密码。

● ssl.key.password配置为client.keystore.jks的密码。

关闭 SSL 双向认证

步骤1 登录管理控制台。

步骤2 在管理控制台左上角单击 ,选择区域。

说明

此处请选择与您的应用服务相同的区域。

步骤3 在管理控制台左上角单击 ,选择“应用中间件 > 分布式消息服务Kafka版”,进入 分布式消息服务Kafka专享版页面。

步骤4 单击待关闭SSL双向认证的实例名称,进入实例详情页面。

步骤5 在“高级配置 > SSL双向认证”后,单击 ,关闭SSL双向认证。

须知

关闭SSL双向认证将重启实例,请谨慎操作。

步骤6 关闭SSL双向认证后,需要在客户端的“consumer.properties”和

“producer.properties”文件中,分别修改服务端证书协议类型,并删除客户端证书配 置。

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.keystore.location=/var/private/ssl/kafka.client.keystore.jks ssl.keystore.password=test123

ssl.key.password=test123

security.protocol配置证书协议类型,关闭SSL双向认证时,必须设置为SASL_SSL。

“ssl.truststore.location”、“ssl.truststore.password”和

“ssl.endpoint.identification.algorithm”无需修改。

----结束

5 实例管理

相關文件