一、遇到时的场景

我在开发环境时,连接SQLServer数据库并没有出现问题。但到了生产环境,要将项目打包发布到服务器运行时,发现运行不成功,打开日志文件查看,便出现了:

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

意思是数据库服务端的协议版本是TLS10,而客户端协议版本是TLS12

二、解决

通过百度解决了该问题(万能)

问题大概就在于我开发环境时所使用的JDK和服务器所上使用了JDK版本不一致,但也有可能是JDBC版本、数据库的版本的问题。


需要在你的设备上找到jdk的安装目录
【\Java\jdk1.8.0_291\jre\lib\security】下的java.security改改安全协议的配置即可。删掉这两个:TLSv1、TLSv1.1。

特别要注意的是,如果你是选择了jre的运行环境来运行,那就是这个目录【\jre1.8.0_291\lib】

1
2
3
# 找到并修改如下参数
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, \
EC keySize < 224, 3DES_EDE_CBC

附上springboot 连接sql server的配置代码

  1. 引入依赖
    1
    2
    3
    4
    5
    <dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>8.2.2.jre8</version>
    </dependency>
  2. 数据库连接配置
    1
    2
    3
    4
    driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
    url: jdbc:sqlserver://ip:port;databasename=数据库名
    username: sa
    password: 密码