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

本文介绍了在使用SpringBoot和JDK8连接SQLServer时遇到的SSL加密异常问题。通过修改`java.security`文件,删除特定的算法如3DES_EDE_CBC,以及调整jdk.tls.disabledAlgorithms和jdk.tls.legacyAlgorithms的配置,成功解决了驱动无法建立安全连接的问题。修改后,应用能够正常与SQLServer进行数据查询。

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

由于工作需要使用SpringBoot项目连接SQL Server作数据查询,在使用sqljdbc4-4.0.jar驱动包对数据库进行访问时出现了“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接”异常,最终通过修改java.security文件解决的。

由于不同版本的JDK对于本问题的结局办法不一样,我这边用到的JDK版本为JDK8,而此解决办法也是针对JDK8实现的。

从上网搜查到的资料得知JDK8及更早版本中,通过编辑/lib/security/java.security 文件并将 3DES_EDE_CBCjdk.tls.legacyAlgorithms安全属性中删除即可解决该问题…但事实上除了要修改 legacyAlgorithmsdisabledAlgorithms属性也是需要修改的。

jdk.tls.disabledAlgorithms
jdk.tls.disabledAlgorithms=MD5, SSLv3, DSA, RSA keySize < 2048

# 这个是原有的配置(已封存)
#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在这里被排除掉
jdk.tls.disabledAlgorithms=SSLv3, RC4,  MD5withRSA, \
    DH keySize < 1024, EC keySize < 224, DES40_CBC, RC4_40, \
    include jdk.disabled.namedCurves

而在 Java 8 默认是禁用SSL_RSA_WITH_3DES_EDE_CBC_SHA的,若要连接成功的话,要将其开启,需要将jdk.tls.legacyAlgorithms中的3DES_EDE_CBC删除。

jdk.tls.legacyAlgorithms
# 这个是原有配置(已封存)
#jdk.tls.legacyAlgorithms= \
#        K_NULL, C_NULL, M_NULL, \
#        DH_anon, ECDH_anon, \
#        RC4_128, RC4_40, DES_CBC, DES40_CBC, \
#        3DES_EDE_CBC

# 这个是修改后的配置,这里将“3DES_EDE_CBC”删除了
jdk.tls.legacyAlgorithms= \
        K_NULL, C_NULL, M_NULL, \
        DH_anon, ECDH_anon, \
        RC4_128, RC4_40, DES_CBC, DES40_CBC

配置好了之后就可以正常使用SQL Server驱动了。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kida 的技术小屋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值