【问题标题】:wrong version keystore when doing https call进行 https 调用时错误的版本密钥库
【发布时间】:2011-10-19 11:20:33
【问题描述】:

各位安卓程序员好。

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

我使用了疯狂的鲍勃方法来处理证书。 这是疯狂的鲍勃链接:http://blog.crazybob.org/2010/02/android-trusting-ssl-certificates.html

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

关于如何解决此问题的任何建议? 谢谢。

【问题讨论】:

标签: android https version keystore


【解决方案1】:

您是否使用 Bouncy Castle 格式创建了密钥库?使用 keytool 创建密钥库时,所有这 3 个参数都是必需的(尤其是密钥库类型必须BKS):

  -storetype BKS
  -provider org.bouncycastle.jce.provider.BouncyCastleProvider
  -providerpath /path/to/bouncycastle.jar

Android 使用 1.46 版本的 bouncycastle,请确保在创建密钥库时使用此版本 1.46版本被发现here

【讨论】:

    【解决方案2】:

    如果有人偶然发现这一点并且@Jcs 的出色答案并没有解决它:我遇到了完全相同的问题,结果证明我没有在我的网络服务器上正确安装 SSL 证书。我在使用digicert's SSL testing tool 时得到了这个想法:我的证书提供者使用了使用中间 CA 签署服务器证书的常见做法。安装证书链(将颁发者的中间 CA 链接到其根 CA)后,一切正常。

    【讨论】:

      【解决方案3】:

      一个简单的替代方法是使用Portecle 来生成 BKS:

      1. 下载Boucycastle Provider 1.46
      2. 替换 Portecle 安装目录中的 bcprov.jar(例如:C:\Program Files (x86)\Portecle\bcprov.jar)。必须使用相同的命名。
      3. 重启 Portecle 并生成您的 BKS 信任库。

      备注:对我来说,问题出在 Android 4.0.3 上,并且已解决。

      更多解释here.

      【讨论】:

        猜你喜欢
        • 2012-06-22
        • 1970-01-01
        • 2015-09-16
        • 2013-12-21
        • 2013-05-22
        • 1970-01-01
        • 2020-11-14
        • 2013-05-27
        相关资源
        最近更新 更多