JDK-11 SSLHandshakeException:没有合适的协议(协议被禁用或密码套件不合适)



使用jdk-11 (Oracle 11.0.10)建立HTTPS连接时出现此错误

javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate)
at java.base/sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:170) ~[na:na]
at java.base/sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:98) ~[na:na]
at java.base/sun.security.ssl.TransportContext.kickstart(TransportContext.java:221) ~[na:na]
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:394) ~[na:na]
at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:373) ~[na:na]
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:436) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) ~[httpclient-4.5.13.jar:4.5.13]
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) ~[httpclient-4.5.13.jar:4.5.13]

我已经尝试禁用或编辑jdk.tls.disabledAlgorithms,但仍然是同样的问题。
java。我编辑的安全性在-C:Program FilesJavajdk-11.0.10confsecurity

此异常是由于TLSv1和TLSv1.1弃用。

从OpenJDK 8u292起,11.0.11起以及所有版本的OpenJDK 16起,所有TLS连接都需要使用TLSv1.2或TLSv1.3版本。你可以通过设置Java系统属性来设置TLS版本。

对于使用HttpsURLConnection:System.setProperty("https.protocols", "TLSv1.2");的HTTPS连接

foot SMTPS connections:System.setProperty("mail.smtp.ssl.protocols", "TLSv1.2");

for POP3S connections:System.setProperty("mail.pop3s.ssl.protocols", "TLSv1.2");

在客户端源代码之前使用上述命令。

我在java 11.0.11中遇到了同样的问题。更新您的java或使用以前的版本。它适用于openjdk版本"11.0.8";OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.8+10).

相关内容

最新更新