javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]
时间: 2023-12-03 10:39:25 浏览: 401
当客户端和服务器之间的TLS版本不兼容时,就会出现javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]这个错误。为了解决这个问题,我们可以采取以下两种方法:
1.升级Java版本:TLS1.3是Java 11的默认协议,如果您使用的是Java 8或更早版本,则需要升级Java版本以支持TLS1.3。如果您无法升级Java版本,则可以尝试第二种方法。
2.在Java启动参数中添加以下参数:-Djdk.tls.client.protocols=TLSv1.2,TLSv1.3。这将强制Java客户端使用TLS1.2或TLS1.3协议与服务器通信,从而解决TLS版本不兼容的问题。
```shell
java -Djdk.tls.client.protocols=TLSv1.2,TLSv1.3 YourApplication
```
相关问题
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: protocol_version是由于协议版本不匹配导致的SSL握手异常。这通常发生在客户端和服务器之间的TLS/SSL协议版本不兼容时。解决这个问题的方法是,确保客户端和服务器都使用相同的TLS/SSL协议版本。您可以尝试更新您的TLS/SSL库或配置,以匹配服务器的要求。同时,您还可以尝试禁用SSL来解决该问题,即在数据库驱动程序的链接URL中添加?useSSL=false参数。这样可以禁用SSL连接,并使用非加密的方式进行数据库连接。
javax.net.ssl.SSLHandshakeException: Server chose TLSv1, but that protocol version is not enabled or not supported by the client.
这个异常通常是因为客户端不支持服务器选择的TLS版本导致的。解决方法是在客户端中启用TLSv1或更高版本。
如果你正在使用Java,可以尝试使用以下代码启用TLSv1或更高版本:
```java
System.setProperty("https.protocols", "TLSv1,TLSv1.1,TLSv1.2");
```
如果你使用的是其他语言或框架,请查阅相应的文档,了解如何启用TLSv1或更高版本。
阅读全文