驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS12]”

本文提供两种解决方案,保证能解决这个问题

虽然现在大家基本上都用mysql数据库了,但是难免有时候会碰到要使用sqlserver的情况。

这时候如果你不是用微软的产品去连接,比如你用java开发,使用驱动包连接可能会碰到【驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS12]”】这个错误.

低版本的驱动还可能是英文的报错【The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: “The server selected protocol version TLS10 is not accepted by client preferences [TLS12]”. ClientConnectionId:d5fd8d69-ae88-4055-9f6d-6e8515224ce2】。

这个问题其实最主要还得看后面那一句话【The server selected protocol version TLS10 is not accepted by client preferences [TLS12]】,意思是数据库服务端的协议版本是TLS10,而客户端协议版本是TLS12。

只需要在你的设备上找到jdk的安装目录【\Java\jdk1.8.0_291\jre\lib\security】下的java.security改改安全协议的配置即可。删掉这两个:TLSv1、TLSv1.1。 特别要注意的是,如果你是选择了jre的运行环境来运行,那就是这个目录【\jre1.8.0_291\lib】

有的同学可能找不到这个文件,或者文件没改对还是不行,ok,没关系,还有第二种方法
添加启动参数如下:

"-Djava.security.properties=E:\tmp\my.java.security"

后面跟的文件你可以自定义,内容如下,但你也可以指定一个不存在的文件,这就意味着你并不需要这个安全协议,也是可以的

jdk.tls.disabledAlgorithms=SSLv3, 3DES_EDE_CBC, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, anon, NULL, \
    include jdk.disabled.namedCurves

1、tomcat启动如何添加:
在这里插入图片描述
2、运行jar时直接在命令后面添加参数
3、springboot启动和tomcat类似,在启动配置里边添加此启动参数
附上springboot 连接sql server的配置代码
1、引入依赖

<dependency>
	   <groupId>com.microsoft.sqlserver</groupId>
	   <artifactId>mssql-jdbc</artifactId>
	   <version>8.2.2.jre8</version>
</dependency>

2、数据库连接配置

driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
url: jdbc:sqlserver://ip:port;databasename=数据库名
username: sa
password: 密码

分享到这里就结束了,欢迎大家讨论指正。

将 jdk.tls.disabledAlgorithms= 后边的TLSv1, TLSv1.1,3DES_EDE_CBC,删除即可。需要修改E:\JDK\jre\lib\security 下的java.security 文件。jdk版本 1.8。 com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字(SSL)加密SQL Server 建立安全连接。错误:“SQL Server 未返回响应。 08S01] 驱动程序无法通过使用安全套接字(SSL)加密SQL Server 建立安全连接。错误:“PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderExcepti 在我用eclipse连接ssms的时候,我出现了这样的问题,在浏览器上搜索出来的全是csdn的异曲同工的回答,把jdk里面的security文件删删改改,这让我感觉到很苦恼,因为实际上的解决方法很简单,但我在微软的浏览器搜索花了很长时间都没找到有效的解决方案,于是第二天我在chrome搜索很快就出来了。出现这个问题可以很直接的解决。最终的结果运行也如愿成功。 问题分析与解决:驱动程序无法通过使用安全套接字(SSL)加密SQL Server 建立安全连接。错误 No appropriate protocol (protocol is disabled or cipher suites are inappropriate) 这是为了解决JAVA中JDBC连接数据库遇到的“驱动程序无法通过使用安全套接字(SSL)加密SQL Server 建立安全连接。”问题而记录的。 报错信息: com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字(SSL)加密SQL Server 建立安全连接。错误:“SQL Server 未返回响应。连... DatabaseName=数据库名称;springboot整合sqlserver报这个错时,再连接数据库的url上加上一个信任server的属性就可以了。username: 账号。password: 密码。 在连接sql server是连接出现错误,如上图例所示。在成功注册驱动后无法连接到数据库,在确保jdbc包和注册驱动驱动成功的情况下,只需要将。去搜索这个问题时很多地方都是。修改一下即可成功运行程序。