Kafka創建SSL證書


對於消息組件,如果按照最初的設計來講,性能最高得就是RabbitMQ,因為RabbitMQ設計比較完整,而Kafka不同,Kafka最初的設計最大的坑:沒有安全認證,所以最初的一些系統設計的時候為了考慮到安全性,所以采用了性能較差的ssl認證方式來進行出來,也就是說使用證書的方式來處理認證操作。 如果要想進行證書的ssl處理,那么肯定需要通過java中的keytool工具生成相應的證書信息,而后將此證書信息內容交給客戶端與服務端共同匹配后才可以訪問。 一、生成ssl證書 1、 為了方便證書的保存處理,首先建立一個證書的保存目錄: mkdir -p /usr/ca/{root,server,client,trust} 2、 生成server.keystore.jks證書的孵化器: keytool -keystore /usr/ca/server/server.keystore.jks -alias kafka-single -validity 365 -genkey -keypass mldnjava -dname "CN=kafka-single.com,OU=mldn,O=mldnjava,L=bj,S=bj,C=cn" -storepass mldnjava 在/usr/ca/server/目錄下會生成server.keystore.jks文件 3、 為了保證整個證書的安全性,所以需要使用CA進行證書的簽名保證,下面創建CA的認證證書: openssl req -new -x509 -keyout /usr/ca/root/ca-key -out /usr/ca/root/ca-cert -days 365 -passout pass:mldnjava -subj "/C=cn/ST=bj/L=b/O=mldn/OU=mldnjava/CN=kafka-single.com"

4、 通過CA創建一個服務器端的信任證書,有了信任證書才可以進行證書有效性的檢測: keytool -keystore /usr/ca/trust/server.truststore.jks -alias CARoot -import -file /usr/ca/root/ca-cert -storepass mldnjava 提示時輸入:y 5、 通過CA創建一個客戶端的信任證書: keytool -keystore /usr/ca/trust/client.truststore.jks -alias CARoot -import -file /usr/ca/root/ca-cert -storepass mldnjava 6、 進行服務器端證書簽名處理: ##導出服務器證書"server.cert-file": keytool -keystore /usr/ca/server/server.keystore.jks -alias kafka-single -certreq -file /usr/ca/server/server.cert-file -storepass mldnjava ##用ca給服務器證書進行簽名處理: openssl x509 -req -CA /usr/ca/root/ca-cert -CAkey /usr/ca/root/ca-key -in /usr/ca/server/server.cert-file -out /usr/ca/server/server.cert-signed -days 365 -CAcreateserial -passin pass:mldnjava ##將CA證書導入到服務器keystore keytool -keystore /usr/ca/server/server.keystore.jks -alias CARoot -import -file /usr/ca/root/ca-cert -storepass mldnjava ##將已簽名的服務器證書導入到服務器keystore keytool -keystore /usr/ca/server/server.keystore.jks -alias kafka-single -import -file /usr/ca/server/server.cert-signed  -storepass mldnjava 7、 如果你的現在kafka主機有很多(集群),那么所有的客戶端服務器還需要設置客戶端證書處理: keytool -keystore /usr/ca/client/client.keystore.jks -alias kafka-single -validity 365 -genkey -keypass mldnjava -dname "CN=kafka-single.com,OU=mldn,O=mldnjava,L=bj,S=bj,C=cn" -storepass mldnjava keytool -keystore /usr/ca/client/client.keystore.jks -alias kafka-single -certreq -file /usr/ca/client/client.cert-file  -storepass mldnjava openssl x509 -req -CA /usr/ca/root/ca-cert -CAkey /usr/ca/root/ca-key -in /usr/ca/client/client.cert-file -out /usr/ca/client/client.cert-signed -days 365 -CAcreateserial -passin pass:mldnjava keytool -keystore /usr/ca/client/client.keystore.jks -alias CARoot -import -file /usr/ca/root/ca-cert -storepass mldnjava keytool -keystore /usr/ca/client/client.keystore.jks -alias kafka-single -import -file /usr/ca/client/client.cert-signed  -storepass mldnjava ##server.properties listeners=SSL://kafka-single:9093
advertised.listeners=SSL://kafka-single:9093
ssl.keystore.location=/usr/ca/server/server.keystore.jks ssl.keystore.password=mldnjava ssl.key.password=mldnjava ssl.truststore.location=/usr/ca/trust/server.truststore.jks ssl.truststore.password=mldnjava ssl.client.auth=required ssl.enabled.protocols=TLSv1.2,TLSv1.1,TLSv1 ssl.keystore.type=JKS ssl.truststore.type=JKS security.inter.broker.protocol=SSL

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM