程序员开发实例大全宝库

网站首页 > 编程文章 正文

【Java】无法通过使用安全套接字层与SQL Server建立安全连接

zazugpt 2024-09-08 11:23:01 编程文章 35 ℃ 0 评论

这是一篇2021年的文章,当时在开发的过程中遇到“ JDK8 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接”这样的问题。当时项目采用的是 JDK8 使用 sqljdbc4.jar 驱动与 SQL Server 数据库连接。

在项目启动执行到创建数据库连接池时抛出以上错误,经排查发现这跟JDK版本有莫大的关系。

JDK8 及更早版本中,编辑 /lib/security/java.security 文件并将 3DES_EDE_CBC 从 jdk.tls.legacyAlgorithms 安全属性删除可解决问题(官方反馈)。他们认为这是一个低级的风险并不值得他们做回归(就尼玛的懒),所以在 JDK8 中并没有修改,直到11版本才修复了该问题。

最终导致在使用 sqljdbc.jar 驱动时需对 java.security 文件进行修改,以下是修改内容:

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去掉以确保SSL加密生效
jdk.tls.disabledAlgorithms=SSLv3, RC4,  MD5withRSA, \
DH keySize < 1024, EC keySize < 224, DES40_CBC, RC4_40, \
include jdk.disabled.namedCurves

在 JDK8 默认禁用:“SSL_RSA_WITH_3DES_EDE_CBC_SHA”(加密套件)。要连接成功的话,需要开启 “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

做好以上配置后基本上就可以正常启动了。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表