Android中SSL通信中使用的bks格式證書的生成

上一篇Android開發(fā)之基于Netty的TCP連接中使用SSL加密提到需要加載jks格式的證書來構(gòu)建SSLContext。實(shí)際上在Android中是無(wú)法使用jks證書的。Android 系統(tǒng)中使用的證書要求是bks格式。
一般來說,我們使用jdk的keytool只能生成jks的證書庫(kù),如果生成bks的則需要下載BouncyCastle庫(kù)。
搜集了各方資料,整理了以下如何將服務(wù)端提供的crt格式證書轉(zhuǎn)換成Android上使用的bks證書。

1 Introduction

JKS和JCEKS是Java密鑰庫(kù)(KeyStore)的兩種比較常見類型,JKS的Provider是SUN,在每個(gè)版本的JDK中都有。
BKS來自BouncyCastleProvider,它使用的也是TripleDES來保護(hù)密鑰庫(kù)中的Key,它能夠防止證書庫(kù)被不小心修改(Keystore的keyentry改掉1個(gè)bit都會(huì)產(chǎn)生錯(cuò)誤),BKS能夠跟JKS互操作。

2 Steps

  1. 要生成bks證書,需要bcprov-ext-jdk15on-151.jar下載地址)。且將該文件放到Java\jdk1.8.0_20\jre\lib\ext目錄下。

  2. 我們的后端同事提供了自簽名的服務(wù)器證書server.crt,我們需要把這個(gè)server.crt轉(zhuǎn)換成Android系統(tǒng)的bks格式證書。使用以下命令行:

keytool -importcert -trustcacerts -keystore e:\key.bks -file e:\server.crt -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider

按照提示重復(fù)輸入兩次密碼(在Java的KeyStore對(duì)象加載證書時(shí)會(huì)用到這個(gè)密碼。),然后就成功將E:\目錄下的server.crt轉(zhuǎn)成key.bks證書。

  1. 把證書復(fù)制到Android項(xiàng)目的asset目錄中,參考上篇文章即可實(shí)現(xiàn)單向的SSL加密TCP通信。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容