1(可以绕过)准备过程
为了让这个教程可以一直复用,打算直接写一个双向认证的APP作为素材。
工具:
●protecle(签名文件转换)
●keytool(java自己就有)
●openssl(apache里有)
●apache
●android studio
1.1 AndroidStudio构造本体代码
代码很简单,主要是TrustCA、OKHTTPPackage(OKHTTP的封装类,当然直接调用也行)和进行双签校验的类SSLVerify。这三个类都可以复制我这里的。
1.2 准备双签证书
其实就是构造两个证书公私钥->转换格式。只不过这方面资料很少,幸亏当时踩过坑有经验了。
keytool(openssl也行,但是输出格式不一样)直接生成两个证书:
.\keytool.exe -genkeypair -keyalg RSA -alias client -keystore client.jks -keypass augusttheodor -storepass augusttheodor -validity 365000
生成证书client.jks 与server.jks。
然后开始转换格式,apache那里需要crt与key格式,android这里需要bks与cer格式。
keytool先导出jks证书为cer格式:
.\keytool.exe -export -alias client -keystore client.jks -storepass augusttheodor -file client.cer
用protecle打开client的jks证书,转换jks证书为bks格式:
点击保存,导出为bks文件。
用openssl将server.cer转换成server.crt:
.\openssl.exe x509 -inform DER -in server.cer -out server.crt
用openssl将server的key导出:
.\openssl pkcs12 -nocerts -nodes -in server.jks -out server.key
若有收获,就点个赞吧