我的应用通过自签名证书通过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.
答案 0 :(得分:2)
是的,使用直接更新和SSL握手错误是相关的。 Android不允许您使用自签名证书(除非您以某种方式绕过SSL)。由于您无法在Android的信任库中安装自签名证书,因此Android客户端无法为服务器的自签名证书建立信任。
您可能在Android清单文件中指定了以下标志:
android:debuggable="true"
此标志在通过混合通道时禁用SSL验证,可能是您之前未看到SSL错误的原因。直接更新在不同级别处理,此标志不适用,因此确实会进行SSL验证。
您应该使用自签名CA证书代替开发/测试目的。请参阅以下有关如何生成自签名CA的答案: https://stackoverflow.com/a/19841469/2494287
答案 1 :(得分:1)
直接更新不适用于自签名证书。它旨在用于生产,因此它只接受有效的CA证书。