驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

报错信息

我的DataGrip是最新版,连接的sqlserver为2008R2版本,报错信息为:

DBMS: Microsoft SQL Server (版本 10.50.1600)
区分大小写: 普通形式=mixed,分隔形式=mixed
驱动程序: Microsoft JDBC Driver 8.2 for SQL Server (版本 8.2.2.0,JDBC4.2)
[08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]”。 ClientConnectionId:837d4f63-149f-4b26-8362-0b5dbacc88cf
The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]

可能禁用了以下必需算法: SSLv3, TLSv1, TLSv1.1, DTLSv1.0, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, ECDH。编辑禁用算法的列表以纳入必需算法。您可以先尝试启用 TLSv1 或 TLSv1.1。.

处理方法:

先说处理方法,再说原因

1. 直接启用TLSv1

没错,你只需要点击【启用TLSv1】,然后你就不小心的发现,可以正确的连接了

2.其他方法【建议上方方法不顶用再尝试】

以下方法为AI推荐的方法,我还没试过大家酌情使用

方案 1:升级 SQL Server(根本解决
  • SQL Server 2008 不支持 TLS 1.2,必须升级到 SQL Server 2016 及以上版本

  • 若暂时无法升级,可参考微软官方补丁,但 SQL Server 2008 已终止支持,无官方 TLS 1.2 补丁。

方案 2:修改客户端 JDK 配置(临时解决

允许 DataGrip 使用 TLS 1.0:

  1. 找到 DataGrip 使用的 JDK 路径:

    • Windows:
      C:\Users\<用户名>\AppData\Local\JetBrains\DataGrip<版本>\jbr\conf\security\java.security

    • macOS:
      /Applications/DataGrip.app/Contents/jbr/Contents/Home/conf/security/java.security

  2. 修改 java.security 文件: 找到这一行:

    jdk.tls.disabledAlgorithms=SSLv3, TLSv1, TLSv1.1, RC4, DES, MD5withRSA, DH keySize < 1024, ...

    改为:

    jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize < 1024, ...

    (即 移除 TLSv1 和 TLSv1.1

  3. 重启 DataGrip,再次连接。

方案 3:使用旧版 JDBC 驱动(辅助)

  • 下载 Microsoft JDBC Driver 6.0/7.0 for SQL Server(支持 TLS 1.0)。

  • 在 DataGrip 中手动指定该驱动:

    • File → Data Sources → Drivers → Microsoft SQL Server → 替换为旧版 jar

报错原因

处理完之后复盘一下报错的原因:【 SQL Server 2008 默认使用 TLS 1.0,而 DataGrip(或其内置 JDK)已禁用 TLS 1.0 和 TLS 1.1,只接受 TLS 1.2 或 TLS 1.3,导致协商失败。】就是DataGrip或者JDK认为TLS 1.0 和 TLS 1.1已经是陈旧的协议,安全性能较低,导致DataGrip在连接数据库中不再使用该协议,但是数据库因为是旧版本,只能通过这两旧的协议进行连接,因此发生了协议不通过的报错。要不就升级Sqlserver的版本,也就变相的升级了协议的版本,要不就让本地的JDK或者DataGrip支持使用有风险的协议。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值