android上HTTPS连接存在未知协议错误

android上HTTPS连接存在未知协议错误,android,rest,ssl,https,openssl,Android,Rest,Ssl,Https,Openssl,我正在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

我正在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 Navigator调用REST服务时,连接已成功建立,并且工作正常

安卓手机运行的是HTC最新的4.0.3安卓系统

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

在浏览OpenSSL源代码时,除了一个低级问题外,没有给我任何提示


有没有关于如何进一步调试的建议?

好的,我找到了问题所在

根据使用OpenSSL s_客户端的建议,我意识到我使用了错误的连接端口号。新服务器使用的是标准SSL端口,而我以前使用的另一台服务器则不是这样

由于服务器没有根据SSL协议进行响应,OpenSSL无法对响应进行有意义的解码,因此出现了
未知协议错误

对于希望了解我如何使用OpenSSL s_客户端(在您的shell中)的人,请执行以下操作:

$openssl s_client-connectmyhost.example.com:443-tls1-servername myhost.example.com
-servername
选项用于在服务器上托管多个站点时确保服务器提供正确的证书。SNI是一个TLS 1.0(及以上)选项,
-tls1_1
-tls1_2
通常也能工作


然后会显示一卡车关于刚刚打开的SSL连接的信息。

可能的重复:您是否检查了新服务器是否正确安装了SSL证书?还要连接openssl s_客户端,查看服务器正在发送什么。另请参阅。Java在其
SSLSocketFactory
中有一些令人讨厌的隐藏行为;而且
SSLSocketFactoryEx
确保协议和密码套件是“可接受的”(根据“可接受”的现代定义)。