如何解决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.security 在 - C:\Program Files\Java\jdk-11.0.10\conf\security
解决方法
我在 Java 11.0.11 上遇到了同样的问题。更新您的 java 或使用以前的版本。它适用于我的 openjdk 版本“11.0.8” OpenJDK 运行时环境采用 OpenJDK(构建 11.0.8+10)。
,此异常是由于 TLSv1 和 TLSv1.1 弃用所致。
从 OpenJDK 8u292 起、11.0.11 起和 OpenJDK 16 read here 的所有版本开始,所有 TLS 连接都需要使用 TLSv1.2 或 TLSv1.3 版本。您可以通过设置 Java System 属性来设置要使用的 TLS 版本。
对于使用 HttpsURLConnection
的 HTTPS 连接:System.setProperty("https.protocols","TLSv1.2");
Fot SMTPS 连接:System.setProperty("mail.smtp.ssl.protocols","TLSv1.2");
Fot POP3S 连接:System.setProperty("mail.pop3s.ssl.protocols","TLSv1.2");
在您的客户端源之前使用上述命令。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。