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

本文档介绍如何修复Java应用中遇到的与SQLServer连接失败问题,由于服务器选择的TLS10版本不被客户端接受,通过修改java.security文件,禁用TLS1/TLS1.1并只保留TLS12。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


这两天在运行项目的时候报了这个错误,然后在网上找了下解决方案。

有很多是说jdk版本的问题,然后我发现我的情况好像不是一样。

我的jdk版本是1.8.0_301的

我的解决方案是修改了java.security文件

具体目录是在jdk1.8.0_301\jre\lib\security这个路径下的,需要修改的大致在720行左右

#替换修改  12.08  问题:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS12]”
#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
	
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, anon, NULL, \
    include jdk.disabled.namedCurves

主要是把这段里面的 TLSv1, TLSv1.1, 3DES_EDE_CBC 注释掉就可以了

### SQL Server SSL 连接错误解决方案 当遇到 `The server selected protocol version TLS10 is not accepted by client preferences [TLS12]` 错误时,表明客户端仅支持更高版本的TLS协议(如TLS 1.2),而SQL Server默认选择了较低版本的TLS协议(如TLS 1.0)。为了修复此问题,可以采取以下措施: #### 配置SQL Server 支持TLS 1.2 确保操作系统和SQL Server都配置为优先使用TLS 1.2。 对于Windows Server环境,在注册表中设置如下键值来启用并强制使用TLS 1.2: ```powershell Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name Enabled -Value 1 Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client" -Name DisabledByDefault -Value 0 Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Name Enabled -Value 1 Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server" -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 2.0\Client" -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL 3.0\Client" -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client" -Path "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server" -Name Enabled -Value 0 ``` 重启计算机使更改生效[^1]。 #### 更新SQL Server 安全补丁 安装最新的累积更新包(CU),这些更新通常包含了安全性和稳定性改进以及对新功能的支持。微软官方建议始终运行最新发布的CU版本以获得最佳性能和安全性保障。 #### 修改应用程序连接字符串 如果可能的话,调整应用端的连接参数,显式指定要使用加密算法和协议级别。例如,在ADO.NET环境中可以通过添加额外属性到ConnectionString实现这一点: ```csharp string connectionString = @"Data Source=myServerAddress;Initial Catalog=myDataBase; Encrypt=True;TrustServerCertificate=False;"; using (SqlConnection conn = new SqlConnection(connectionString)) { // Your code here... } ``` 注意这里启用了加密选项(`Encrypt=True`)并且未信任服务器证书(`TrustServerCertificate=False`),这会促使驱动程序验证远程主机的身份合法性,并尝试协商最高等级的安全传输层协议。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值