亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何創建包含客戶端證書鏈的BKS(BouncyCastle)格式的Java密鑰庫

如何創建包含客戶端證書鏈的BKS(BouncyCastle)格式的Java密鑰庫

Cats萌萌 2019-11-23 10:49:11
我正在編寫一個需要SSL客戶端身份驗證的Android應用。我知道如何為桌面Java應用程序創建JKS密鑰庫,但是Android僅支持BKS格式。我嘗試創建密鑰庫的每種方式都會導致以下錯誤:handling exception: javax.net.ssl.SSLHandshakeException: null cert chain這樣看來,客戶端永遠不會發送正確的證書鏈,這可能是因為我沒有正確創建密鑰庫。我無法像在臺式機上那樣啟用SSL調試,因此這比應做的要困難得多。作為參考,以下是創建BKS 信任庫的命令:keytool -importcert -v -trustcacerts -file "cacert.pem" -alias ca -keystore "mySrvTruststore.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-145.jar" -storetype BKS -storepass testtest這是我嘗試過的無法創建BKS客戶端密鑰庫的命令:cat clientkey.pem clientcert.pem cacert.pem > client.pemkeytool -import -v -file <(openssl x509 -in client.pem) -alias client -keystore "clientkeystore" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-145.jar" -storetype BKS -storepass testtest
查看完整描述

3 回答

?
米脂

TA貢獻1836條經驗 獲得超3個贊

不確定您是否解決了此問題,但這是我的解決方法,并且可以在Android上使用:

  1. 使用openssl將客戶端的證書(證書必須由服務器接受的CA簽名)和私鑰合并為PCKS12格式的密鑰對: openssl pkcs12 -export -in clientcert.pem -inkey clientkey.pem -out client.p12

  2. 您可能需要將JRE修補為最大強度加密,具體取決于您的密鑰強度:從JCE 5.0無限強度管轄策略文件復制jar文件并覆蓋JRE中的文件(例如C:\ Program Files \ Java \ jre6 \ lib \ security )

  3. 使用上述Portecle工具并以BKS格式創建新的密鑰庫

  4. 導入在步驟1中生成的PCKS12密鑰對,并將其保存為BKS密鑰庫。此密鑰庫可用于Android客戶端身份驗證。

  5. 如果需要執行證書鏈,則可以使用此IBM工具:KeyMan將客戶端的PCKS12密鑰對與CA證書合并。但是它僅生成JKS密鑰庫,因此您再次需要Protecle將其轉換為BKS格式。


查看完整回答
反對 回復 2019-11-23
  • 3 回答
  • 0 關注
  • 1314 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號