你好安卓机器人。
我正在尝试从我的Android代码进行https安全调用。该调用在模拟器上正常,但在实际的三星Galaxy设备上,我收到SSL错误。
我用疯狂的bobs方法处理cetificate。 这是疯狂的bobs链接:http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html。
问题是我在自定义SSLSocketFactory对象中遇到错误:“密钥库的版本错误”。
有关如何解决此问题的建议? 感谢。
答案 0 :(得分:28)
您是否使用Bouncy Castle格式创建了密钥库?使用keytool创建密钥库时,所有这3个参数都是必需的(尤其是密钥库类型必须为BKS
):
-storetype BKS
-provider org.bouncycastle.jce.provider.BouncyCastleProvider
-providerpath /path/to/bouncycastle.jar
Android使用bouncycastle版本1.46,请确保在创建密钥库时使用此版本 找到版本1.46 here
答案 1 :(得分:0)
如果有人偶然发现这个并且@Jcs优秀的答案没解决它:我遇到了完全相同的问题,结果发现我没有在我的网络服务器上正确安装SSL证书。我在使用digicert's SSL testing tool时得到了一个想法:我的证书提供程序使用了与中间CA签署服务器证书的常见做法。安装证书链(将发行者的中间CA链接到其根CA)后,一切正常。
答案 2 :(得分:0)
一个简单的替代方法是使用Portecle生成BKS:
C:\Program Files (x86)\Portecle\bcprov.jar
)。需要相同的命名。备注:对我来说,问题出在Android 4.0.3上并修复了它。
更多解释here。