“没有密码套房共同”java主机和Android客户端
我想通过TCP/IP,使用SSLSockets获得SSL通信。一旦我得到SSLSocket并请求InputStream,我就会在java(主机)端获得“无共同套件共同”异常,并且在客户端获得:“javax.net.ssl.SSLProtocolException:SSL握手中止: ssl = 0x1b3da8:SSL库失败,通常是协议错误“。所以我所做的就是列出Android端的每个可用密码套件,并在服务器端启用它们。仍然有同样的例外。“没有密码套房共同”java主机和Android客户端
然后,我添加以下行前获取输入流:
sslSocket.setEnabledCipherSuites(sslSocket.getSupportedCipherSuites());
和工作。显然,我不能在生产环境中使用它,因为我想确保安全加密正在发生。
那么我做错了什么?
在此先感谢
使用openssl s_client -connect youserver:443
检查什么协议(TLS1,在SSLv3)和密码(RC4-SHA,AES-SHA等),用于连接到服务器。然后在Android客户端启用此密码(如果密码足够安全)。如果不是,请确保在服务器上启用安全密码套件。您可能还想列出Android侧的sslsocket.getEnabledCipherSuites
,以查看默认情况下可用的功能。
我试过了,并在Android设备上添加了所有启用的密码套件,以便在java服务器上使用。仍然没有运气。只有上面的代码行才能做到这一点? – ajacian81
你能用s_client或其他程序连接到你的服务器吗?正如@GregS所说的,可能它没有正确配置。 –
您有权访问服务器吗?你在服务器端检查了支持的密码吗?如果使用桌面浏览器连接到服务器,那么使用什么密码套件? – Robert