执行https调用时出现错误的版本密钥库

时间:2011-08-03 20:48:57

标签: android https version keystore

你好安卓机器人。

我正在尝试从我的Android代码进行https安全调用。该调用在模拟器上正常,但在实际的三星Galaxy设备上,我收到SSL错误。

我用疯狂的bobs方法处理cetificate。 这是疯狂的bobs链接:http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html

问题是我在自定义SSLSocketFactory对象中遇到错误:“密钥库的版本错误”。

有关如何解决此问题的建议? 感谢。

3 个答案:

答案 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:

  1. 下载Boucycastle Provider 1.46
  2. 替换Portecle安装目录中的bcprov.jar(例如:C:\Program Files (x86)\Portecle\bcprov.jar)。需要相同的命名。
  3. 重新启动Portecle并生成BKS信任库。
  4. 备注:对我来说,问题出在Android 4.0.3上并修复了它。

    更多解释here