我正在开发一个Android应用程序,必须通过https与服务器通信与自签名证书(SSL / TLS1.2) . 我也在使用Volley .
我正在关注this教程 . 保存了.crt文件,使用 keytool -importcert -v -trustcacerts -file "cert.crt" -alias IntermediateCA -keystore "key.bks" -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath "bcprov-jdk16-146.jar" -storetype BKS -storepass blabla
在原始目录中创建了key.bks,依此类推 .
当我向服务器发送数据时,Response.ErrorListener()收到无对等证书错误 .
试图发送我的json邮递员(当然,不得不添加证书) - 工作得很好 .
在我的Android设备上手动安装证书 - 工作正常
我怎样才能使它工作?
1 回答
我为这个问题奋斗了很多 . 我发送的服务器似乎有一个虚拟主机(托管在GAE上) . 在Android 5.0上,这个问题已经解决,但是对于Android 5.0,您必须自己添加SNI支持 . 以下是对此问题的解释http://blog.dev001.net/post/67082904181/android-using-sni-and-tlsv1-2-with-apache .
因此,要使我的代码工作,我必须从教程中更改SslSocketFactory类 . 它做了魔术 .