Https双向验证证书:Android+OpenSSL

说点啥

周末的时候自己用tomcat+keytool+android调试通了Https的单、双向证书验证,周一信心满满的来到公司,打算跟后台哥们搞一下基,然后我就收到了三个证书相关的文件:ca.crt ; client.crt ; client.key
what a fuck !
为什么是三个?不是两个吗?而且那个.key又是什么鬼?难道他发多了给我,其实用不到?多半client.crt转成bks就可以了吧。
然而,当我想用.crt转成.bks时,portecle提示我输入密码。“强哥,你那个证书的密码是多少?”,“密码?没有密码啊!”

。。。
。。。
。。。

怎么做

step 1

从OpenSSL入手吧,于是我找到了 这篇文章,看看后台哥们是怎么生成他需要的证书的(他用的golang)
看过文章后,我知道了后台哥们生成了这么样东西:

client使用的文件有:ca.crt,client.crt,client.key
server使用的文件有:ca.crt,server.crt,server.key

然后也明白了,ca.crt就是我们客户端单向验证时使用的证书, 那么client.crt和client.key就应该是双向验证用到的bks了,于是重点就是他们间的转换了

step 2

感谢这两篇文章:
http://www.oschina.net/question/2266279_221175?fromerr=yF3LXIkS
http://www.2cto.com/kf/201502/377155.html
第一篇我搜到了这种方法

openssl pkcs12 -export -in client.crt -inkey client.key -out client.p12 -name tomcat -CAfile ca.crt -caname root -chain

上面代码的目的是将 client.crt 和 client.key转换成 client.p12。.p12格式就是pkcs12的后缀。
然后结合第二个链接的结尾那块所讲,把.p12格式转换成.bks

PS: 生成client.p12时,会输入密码,我们要记住这个密码,后面用得到

step 3

打开portecle,新建一个bks文件

Https双向验证证书:Android+OpenSSL_第1张图片

导入client.p12(选择我们刚刚用openssl生成的)

Https双向验证证书:Android+OpenSSL_第2张图片
这里会输入我们step2中填的密码,然后一路确定,最后填入新密码。说实话这个key pair entry的密码我不晓得是来干嘛的,反正我输入的是qqqqqq.
Https双向验证证书:Android+OpenSSL_第3张图片
填完后确定、保存,这时候又要输入密码了!!!注意了!!![set keystore password]
Https双向验证证书:Android+OpenSSL_第4张图片
这个密码要和上面的entry的密码一样,别问我为什么,我哪里知道,我是试出来的。输入完密码后,保存
Https双向验证证书:Android+OpenSSL_第5张图片

哦了!

last

现在我们手里有一个ca.crt,一个client.bks(密码是最后设置的那个)

相关链接

Android Https相关完全解析 当OkHttp遇到Https
Android 当Volley遇到Https

你可能感兴趣的:(android)