未知协议错误与HTTPS连接在Android上

前端之家收集整理的这篇文章主要介绍了未知协议错误与HTTPS连接在Android上前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 android应用程序上使用HTTPS调用REST服务.我已经有了这个的工作代码,但现在我正在使用一个新安装的托管REST服务的服务器,我无法再建立一个连接.

这是例外:

javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x15b7768: Failure in SSL library,usually a protocol error
error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:683 0x402e5cc3:0x00000000)

该应用程序使用Apache类与REST服务进行交互.即使使用接受任何类型的证书的虚拟TrustManager,我也会收到此错误.

当从Android导航器调用REST服务时,连接成功建立并且正常工作.

Android手机正在运行HTC最新的4.0.3 Android.

REST服务是Apache上托管的mod_perl应用程序,配置了SSL支持.

浏览OpenSSL源代码https://github.com/android/platform_external_openssl/blob/ics-mr0/ssl/s23_clnt.c除了低级别的问题之外,还没有提供任何提示.

有什么建议如何进一步调试?

解决方法

好的,我发现问题是什么.

根据建议使用OpenSSL s_client,这使我意识到我使用错误的端口号连接.新服务器正在使用标准的SSL端口,而不是我之前使用的其他服务器的情况.

由于服务器根据SSL协议无响应,因此无法通过OpenSSL有意义地解释响应,从而导致未知协议错误.

对于想知道我如何使用OpenSSL s_client(在你的shell中)的人:

$openssl s_client -connect myhost.example.com:443 -tls1 -servername myhost.example.com

如果在服务器上托管了多个站点,则“服务器名称”选项将启用Server Name Indication (SNI)以确保服务器提供正确的证书. SNI是TLS 1.0(及以上)选项,-tls1_1和-tls1_2通常也可以工作.

然后显示关于刚刚打开的SSL连接的卡车装载信息.

猜你在找的Android相关文章