java:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接:“The server selected protocol version TLS10 is not a
最新推荐文章于 2023-10-14 20:14:03 发布
最新推荐文章于 2023-10-14 20:14:03 发布 阅读量 1.6w

jdk1.8的较高版本有些设置做了调整,修改%JAVA_HOME%/jre/lib/security/java.security。

题目限制了字数,完整错误是这样的:

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

有同事在统信下,用java程序去访问sql server,不料报了上面的错。拿到windows下运行,又没问题。难道是统信的问题?幸好另外一个同事拿到自己的统信下跑,没有问题,得以排除操作系统的原因。多方比较,是JDK版本的缘故。虽然都是JDK1.8,但后面的小数位版本号有所差别。较高的会报错。查找网上文章,屏蔽了%JAVA_HOME%/jre/lib/security/java.security一些设置,问题解决。

为稳妥起见,和方便日后对照,我复制了jdk.tls.disabledAlgorithms的设置,然后将TLSv1、TLSv1.1、3DES_EDE_CBC从禁止名单中剔除:
在这里插入图片描述
由上也可知,之所以高版本的JDK会报错,是因为它们被禁用了,disabledAlgorithms,algorithms是算法的意思。如果用“驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接”去网上搜索,绝大部分文章都是抄来抄去,说将3DES_EDE_CBC去掉即可,但其实我们的情况有些差别,错误提示得很清楚,涉及到TLS。但同事搞来搞去,几天过去都没搞定,这可能与他只用中文去搜索有关。

参考文章:
The server selected protocol version TLS10 is not accepted by client preferences [TLS12]

当我 使用 DataGrip连接 SqlServer 数据库的时候,进行测试连接,结果报错: 驱动程序 无法 通过 使用 安全 套接字 ( SSL ) 加密 SQL Server 建立 安全 连接。然后这个驱动无论换了哪个版本都不可以,后来查了资料,结果是换成jTds的就可以了。这种原因,百度了一下,可能是 SSL 问题,或者是驱动问题。大家连接的时候一定先试试先换驱动。 SpringBoot程序接入 SQLServer +MyBatisPlus启动时报错: 驱动程序 无法 通过 使用 安全 套接字 ( SSL ) 加密 SQL Server 建立 安全 连接。 TLS 频道 TLS 通道是一个通过 (传输 安全 性)连接实现接口的库。 它将所有 加密 操作委托给标准 Java TLS 实现: ; 有效地将其隐藏在易于 使用 的流API后面,从而可以以最小的复杂性来证券化JVM应用程序。 换句话说,一个简单的库允许程序员 使用 与用于纯文本的标准 套接字 API相同的标准 套接字 API来实现 TLS ,就像Open SSL 对于C,仅用于 Java 一样,填补了标准库中一个特别痛苦的缺失功能。 实现 , 和 ,这是由实现的相同接口,有效地使 加密 成为实现细节。 除了初始设置外,无需直接调用 SSL Engine。 适用于客户端和服务器端 TLS 。 服务器端SNI :根据传入连接发送的接收到的,支持选择不同的 ( SSL Engine完全不支持此功能,但Web浏览器和服务器普遍 使用 此功能)。 使用 相同的API支持阻塞和非阻塞模式,就像SocketChannel对未 加密 的连接一样。 支持全双工 使用 ,读写操作之间没有任何交叉锁定。 可插拔缓冲区策略(这对于节省GC的缓冲区池或 使用 直接缓冲区来加快I / O很有用)。 在数据停止运行之后,内部缓冲区中包含的所有纯文本完全自动清零 ssl keylog 这是 SSL KEYLOGFILE工具的实现,可在Firefox和Chromium / Google Chrome中 使用 ,Wir es hark支持此工具,即使您没有私钥,或 使用 会交换私钥的方法来解密 SSL / TLS 连接,即使您这样做也要防止解密(例如Diffie-Hellman)。 这适用于标准库 ssl 模块,不适用于其他 ssl 模块。 Python 3.8+包含对通过 ssl . SSL Context.keylog_filename生成 SSL 密钥日志文件的内置支持,并且在通过 ssl .create_default_context创建上下文时设置了 SSL KEYLOGFILE环境变量时,也会启用该 ssl .create_default_context 。 此程序包 使用 内置实现所 使用 的同一回调,这可能会导致两个实现彼此踩踏,从而导致另一个不起作用或其他意外后果。 因此,您 无法 进行权限控制 项目版本发布困难 版本控制(Revision control)是维护工程蓝图的标准做法,能追踪工程蓝图从诞生一直到定案的过程。是一种记录若干文件内容变化,以便将来查阅特定版本修订情况的系统... 驱动程序 无法 通过 使用 安全 套接字 ( SSL ) 加密 SQL Server 建立 安全 连接。错误:“The server selected pro tocol version TLS 10 is not accepted by client preferenc es [ TLS 13, TLS 12]” 1.网上大部分文章都是 jdk 装目录下的jre\lib\security 文件夹下,编辑 java .security 文件,找到 jdk. tls .disabledAlgorithms 配置项,将 TLS v1, TLS v1 在连接 sql server 是连接出现错误,如上图例所示。在成功注册驱动后 无法 连接到数据库,在确保jdbc包和注册驱动驱动成功的情况下,只需要将。去搜索这个问题时很多地方都是。修改一下即可成功运行程序。 一、问题描述: 项目工程需求要连接 SqlServer 服务器,但是报错了,完整错误如下:com.microsoft. sqlserver .jdbc. SQLServer Exception: 驱动程序 无法 通过 使用 安全 套接字 ( SSL ) 加密 SQL Server 建立 安全 连接。错误:“The server selected pro tocol version TLS 10 is not accepted by client preferenc es [ TLS 12]”。 翻译成中文: Sql Serve... This document specifi es an Internet standards track pro tocol for the Internet community, and requ es ts discussion and sugg es tions for im pro vements. Please refer to the current edition of the "Internet Official Pro tocol Standards" (STD 1) for the standardization state and status of this pro tocol . Distribution of this memo is unlimited. com.microsoft. sqlserver .jdbc. SQLServer Exception: 驱动程序 无法 通过 使用 安全 套接字 ( SSL ) 加密 SQL Server 建立 安全 连接。 先来一份报错内容: com.microsoft. sqlserver .jdbc. SQLServer Exception: 驱动程序 无法 通过 使用 安全 套接字 ( SSL ) 加密 SQL Server 建立 安全 连接。错误:“sun.security.validator.ValidatorException: PKIX path building failed: sun.security. pro vider.certpath.SunCertPathBuilderException: unable to find valid