The server selected protocol version TLS10 is not accepted by client preferences [TLS12]

sqlserver连接异常

com.microsoft.sqlserver.jdbc.SQLServerException: 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:eeee8314-1ca8-4fc0-ab7a-34df281ba52c

原因:由 Java 程序与 SQL Server 之间的 TLS(传输层安全)协议版本不匹配所致。

1、SQL Server2014及更早版本不支持[TLS 1.2]。

2、Java 8 开始,TLS 1.0 被默认禁用。(启用 TLS 1.0 可能会降低安全性)

因为 TLS 1.0 版本较老,相对不安全,Java 默认会禁用 TLS 1.0,而要求使用较新的 TLS 1.2 或 TLS 1.3 协议。一般通过修改 java.security 中被禁用的协议,将 TLS 1.0 放出来就可以解决。

SQL Server2014及更早版本不支持[TLS 1.2]。这些版本在服务器上去掉TLS 1.0和1.1后,可能会出现SQL服务无法启动的问题。

--查看sqlserver版本
SELECT
  @@VERSION;
SELECT
  SERVERPROPERTY( 'ProductVersion' ) AS ProductVersion,
  SERVERPROPERTY( 'ProductLevel' ) AS ProductLevel,
  SERVERPROPERTY( 'Edition' ) AS Edition;

java支持TLS 1.0方法

方法一:

打开文件 C:\local\Java\jdk1.8.0_321\jre\lib\security\java.security

搜索关键词 tls.disabledAlgorithms

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

删除TLSv1, TLSv1.1,

方法二:

启用 TLS 1.0 的 JVM 参数:

-Djdk.tls.client.protocols=TLSv1.2,TLSv1.1,TLSv1

方法三:

java 应用程序内部设置,可以通过代码设置:

import java.security.Security;
 
public class TLSConfiguration {
    public static void main(String[] args) {
         Security.setProperty("jdk.tls.client.protocols", "TLSv1.2,TLSv1.1,TLSv1");
    }
}

sqlserver处理办法

1、升级版本。SQL Server 2016或更高版本原生支持TLS 1.2。因此,如果可能的话,升级到更高版本的SQL Server是一个直接的解决方案。

2、安装更新。如果必须在SQL Server 2012上实现TLS 1.2支持,则需要安装特定的累积更新(CU)或服务包(SP),这些更新包含了TLS 1.2的支持。具体可参考Microsoft的知识库文章,如3135244对Microsoft SQL Server的TLS 1.2支持所需的System Center 2012 R2更新。通过手动设置或使用注册表文件来启用TLS 1.2。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值