0

我的应用程序通过自签名证书通过 HTTPS 连接到 Worklight 服务器。该应用程序可以成功启动。

但是,当直接更新开始从 Worklight 服务器下载文件时,它失败了,我可以看到有关于找不到证书路径的错误消息。

我可以知道 SSLHandshakeException 和直接更新错误是否相关?谢谢!

(环境:Worklight 5.0.6.1,WAS ND 8.5,测试设备:HTC One)

10-31 21:24:50.897: W/System.err(28746): Catch exception while startHandshake: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
10-31 21:24:50.897: W/System.err(28746): return an invalid session with invalid cipher suite of SSL_NULL_WITH_NULL_NULL
10-31 21:24:50.927: E/WLDroidGap(28746): Failed downloading application update file.
4

2 回答 2

2

是的,使用直接更新和 SSL 握手错误是相关的。Android 不允许您使用自签名证书(除非您以某种方式绕过 SSL)。因为您无法将自签名证书安装到 Android 的信任库中,所以 Android 客户端无法为服务器的自签名证书建立信任。

您可能在 Android 清单文件中指定了以下标志:

android:debuggable="true"

此标志在通过混合通道时禁用 SSL 验证,这可能是您之前看不到 SSL 错误的原因。直接更新在不同级别处理,此标志不适用,因此会发生 SSL 验证。

您应该使用自签名 CA 证书来代替开发/测试目的。请参阅以下有关如何生成自签名 CA 的答案: https ://stackoverflow.com/a/19841469/2494287

于 2013-11-07T20:35:32.037 回答
1

直接更新不适用于自签名证书。它旨在用于生产,因此它只接受有效的 CA 证书。

于 2013-11-05T09:46:41.073 回答