连接sql server 报驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]”。
mybatis 连接sql server 2008数据库报连接sql server 报com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]”。
解决办法:
1. 升级 SQL Server 的 TLS 版本(推荐)
适用场景:若服务器可控,建议优先升级 SQL Server 或配置其支持 TLS 1.2/1.3。
SQL Server 2016 及以上版本:默认支持 TLS 1.2,无需额外配置
旧版本 SQL Server(如 2012/2014):需安装 Microsoft 官方提供的 TLS 1.2 安全更新补丁,或升级至最新 Service Pack
启用服务器端 TLS 1.2:
在 Windows 服务器中,通过注册表或工具(如 IISCrypto)启用 TLS 1.2,并禁用 TLS 1.0/1.1
2. 调整 Java 客户端配置(临时方案)
适用场景:若无法立即升级 SQL Server,可通过以下方法允许客户端临时使用 TLS 1.0:
修改 java.security 文件:
文件路径:
Windows:<JDK_HOME>\jre\lib\security\java.security
Linux/macOS:<JDK_HOME>/jre/lib/security/java.security
找到配置项 jdk.tls.disabledAlgorithms,移除 TLSv1 和 TLSv1.1,例如:
jdk.tls.disabledAlgorithms=SSLv3 # 修改后仅禁用 SSLv3
注意:需重启 Java 应用生效
3. 升级 JDBC 驱动版本
适用场景:若使用旧版 JDBC 驱动,协议协商能力可能受限。
下载最新 Microsoft JDBC 驱动(如 12.4.0 及以上版本),支持更灵活的 TLS 协议协商
确保驱动版本与 JRE 版本匹配(例如,JRE 8 对应 jre8 版本的驱动)
4. 调整 IDE 或工具的 JDK 配置
适用场景:若通过 IDE(如 IntelliJ IDEA、DataGrip、DBeaver)连接数据库,需修改其内置 JDK 的安全配置。
DataGrip/DBeaver:
找到 IDE 安装目录下的 java.security 文件(例如:/Applications/DBeaver.app/Contents/Eclipse/jre/Contents/Home/conf/security/java.security),移除 TLS 1.0/1.1 禁用项
IntelliJ IDEA:
在项目设置中切换至 JDK 8,并修改对应 java.security 文件

浙公网安备 33010602011771号