apache kafka可以使用ssl加密連線,還可以限制客戶端訪問,
給客戶端發行證書,只允許持有證書的客戶端訪問。
下面使用jdk的keytool工具來生成證書,配置kafka。
為了便於演示,ca和伺服器證書使用相同的密碼,如下:
kspass=***x
客戶端證書密碼如下:
client_pass=yyyy
# 生成
keytool -genkeypair -keystore mycastore.jks -storepass $ -alias myca -validity 365 -dname cn=ca,c=cn -ext bc:c
#(注意有效天數。預設是90天。)
# 匯出
keytool -exportcert -keystore mycastore.jks -storepass $ -alias myca -rfc -file myca.cer
# 檢視
keytool -list -keystore mycastore.jks -storepass $
keytool -printcert -file myca.cer
# 生成
keytool -genkeypair -keystore server.keystore.jks -storepass $ -alias server -keypass $ -validity 365 -dname cn=127.0.0.1,c=cn
# 生成證書請求
keytool -certreq -keystore server.keystore.jks -storepass $ -alias server -keypass $ -file server.csr
# ca簽名
keytool -gencert -keystore mycastore.jks -storepass $ -alias myca -keypass $ -validity 365 -infile server.csr -outfile server.cer
# 檢視
keytool -printcert -file server.cer
# 匯入ca證書,生成truststore
keytool -importcert -keystore server.truststore.jks -storepass $ -alias myca -keypass $ -file myca.cer
# 匯入ca證書到keystore
keytool -importcert -keystore server.keystore.jks -storepass $ -alias myca -keypass $ -file myca.cer
# 匯入server證書到keystore
keytool -importcert -keystore server.keystore.jks -storepass $ -alias server -keypass $ -file server.cer
# 生成
keytool -genkeypair -keystore client1.keystore.jks -storepass $ -alias client1 -keypass $ -validity 365 -dname cn=client1,c=cn
# 生成證書請求
keytool -certreq -keystore client1.keystore.jks -storepass $ -alias client1 -keypass $ -file client1.csr
# ca簽名
keytool -gencert -keystore mycastore.jks -storepass $ -alias myca -keypass $ -validity 365 -infile client1.csr -outfile client1.cer
# 檢視
keytool -printcert -file client1.cer
# 匯入ca證書,生成truststore
keytool -importcert -keystore client1.truststore.jks -storepass $ -alias myca -keypass $ -file myca.cer
# 匯入ca證書到keystore
keytool -importcert -keystore client1.keystore.jks -storepass $ -alias myca -keypass $ -file myca.cer
# 匯入server證書到keystore
keytool -importcert -keystore client1.keystore.jks -storepass $ -alias client1 -keypass $ -file client1.cer
(內網使用9092埠明文,外網使用9093埠ssl)
ssl.keystore
.location=server.keystore
.jks
ssl.keystore
.password=***
ssl.key
.password=***
ssl.truststore
.location=server.truststore
.jks
ssl.truststore
.password=***
ssl.client
.auth=required
listeners=plaintext:
.0.0:9092,ssl://:9093
advertised.listeners=plaintext:
.1.1:9092,ssl://x
.x.x
.x:9093
bootstrap.servers=x
.x.x
.x:9093
ssl.protocol=ssl
security.protocol=ssl
ssl.keystore
.location=client1.keystore
.jks
ssl.keystore
.password=***
ssl.key
.password=***
ssl.truststore
.location=client1.truststore
.jks
ssl.truststore
.password=***
TLS原理及證書生成
1 生成rsa金鑰 openssl genrsa des3 out mykey.pem 2048或者 openssl genrsa out mykey.pem 2048建議用2048位金鑰,少於此可能會不安全或很快將不安全。2 生成證書請求 openssl req new key mykey.pem...
證書生成 通配證書生成的方法
今天幫乙個朋友搞了點事情,我提供了乙個可完全隱藏wkwebview並且能載入web的sdk提供給對方使用,為了防止sdk在多個專案的復用,限制了這個sdk只能在具體的某個bundle id下執行,正常情況下這樣是沒有問題的。通過換bundle id進行真機測試的方案很合理,但是針對現在這種需要特定的...
ssl證書生成
openssl req new x509 days 3650 nodes out opt ssl certs postfix.pem keyout opt ssl private postfix.pem第乙個是證書,第二個是key 私鑰 可以應用在很多程式上。下面舉兩個例子 nginx postfi...