Android 2.2 但不是 3.0 中的“不受信任的服务器证书”
Posted
技术标签:
【中文标题】Android 2.2 但不是 3.0 中的“不受信任的服务器证书”【英文标题】:"Not trusted Server Certificate" in Android 2.2 but not 3.0 【发布时间】:2011-10-07 04:17:36 【问题描述】:我正在使用 BouncyCastle 提供程序和 Apache HttpClient 来信任 SSL 证书,如 Antoine Hauck here 所述。
我制作的应用程序以 android 1.5 为目标,在模拟器和运行 3.0 的设备上运行良好。但是,当我尝试在 2.2 (Galaxy S) 上对其进行测试时,会出现 SSLException,“不可信的服务器证书”。
由于没有抱怨 BouncyCastle 本身的错误,我假设设备没有从 .bks 文件中正确读取证书。我正在尝试在 Android 2.2 版上使用 BouncyCastle,还是只需要从工作 3.0 应用程序中进行更改?
更新
当我今天再次尝试运行该应用程序时,它第一次运行正常。我现在已经尝试了几次,它有时运行正常,但有时仍会出现 SSLException。发生这种情况时似乎没有任何规律 - 它可能会连续工作几次,然后反复失败。
【问题讨论】:
您使用的是Apache HTTPclient的内置版本还是4.1.1等外部版本? bks 存储在哪里?在 /res/raw 中的 SDCard 上? 我用的是内置的HttpClient,bks存放在res/raw中。 【参考方案1】:可能是证书的提供者不受信任,请尝试检查受信任的提供者
【讨论】:
应信任提供程序,因为证书已添加到应用程序应信任的密钥库中。证书/密钥库本身没有问题,因为该应用程序可以在模拟器和 3.0 设备上运行。 尽管如此,我还是会接受医生的建议,因为这就是错误消息的含义。非常仔细地检查服务器和您的信任库发送的证书链。可能缺少某些东西,例如中间证书。 证书路径包含根证书、中间证书和网站证书。我确定信任库同时具有根证书和中间证书,该应用程序是否可以要求网站证书也包含在内?以上是关于Android 2.2 但不是 3.0 中的“不受信任的服务器证书”的主要内容,如果未能解决你的问题,请参考以下文章