我正在尝试使用Java连接到主机。从浏览器连接时,主机显示它正在使用密码套件TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA。当我在Java中运行代码以连接到同一主机时,程序不会发送相同的密码套件,因此我收到握手错误。
收到致命警报:handshake_failure
通过互联网阅读后,我认为原因可能是由于不同的密码。所以我尝试使用以下方法在我的Java程序中启用相同的密码:
String pickedCipher[] ={"TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA"};
socket.setEnabledCipherSuites(pickedCipher);
这给我错误:
目前无法支持TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA 已安装的提供商
我在互联网上搜索,大多数人发现我需要安装Java Cryptography Extension(JCE)Unlimited Strength Jurisdiction Policy Files。在。\ jre \ lib \ security中提取JAR。 我做了同样的事情,但我仍然无法启用所需的密码套件并继续获得不受支持的提供程序错误。
我已经搜索并尝试了通过互联网建议的任何内容,但无法建立连接。任何人都可以帮助我。
我正在尝试的代码:
SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();
SSLSocket socket=null;
socket = (SSLSocket) factory.createSocket("147.249.141.13", 443);
enCiphersuite=socket.getEnabledCipherSuites();
socket.setEnabledCipherSuites(enCiphersuite);
socket.startHandshake();