java - SQL Server JDBC 错误 : The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption

标签 java sql-server ssl jdbc database-administration

背景:

  • 应用服务器:

基于 Java 的应用程序在 Windows Server 2008 R2 Enterprise 上运行。 此服务器上的 Java 版本是版本 6 更新 32。 JDBC驱动版本:4.0

  • 数据库服务器:

数据库服务器最近已从 Windows 2016 升级到 Windows 2019,从 SQL Server 2012 升级到 SQL Server 2016,并且没有 Java在这台服务器上。这是个问题吗??

  • 历史:

当我们上次将数据库服务器从 SQL Server 2008 升级到 SQL Server 2012 时,我们采用相同的方法,应用程序运行良好。

但是这次它在应用程序日志中抛出以下错误:
org.jboss.resource.JBossResourceException:无法创建连接; - 嵌套抛出:(com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server 建立安全连接。错误:“SQL Server 未返回响应。连接已关闭。”。)

我们根本没有接触应用服务器,期望当数据库服务器启动时,因为它是相同的服务器名称,它会正常启动备份,但是应用程序失败并出现上述错误。 没有登录失败,因为我们测试了应用程序登录名和密码,它运行良好。

我看了以下内容:
SQL Server JDBC Error on Java 8: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption 但我们似乎无法理解是什么导致了这个问题,因为应用服务器上没有任何变化。 我在这里查看了 JDBC 版本和 SQL Server 矩阵之间的兼容性
https://learn.microsoft.com/en-us/sql/connect/jdbc/microsoft-jdbc-driver-for-sql-server-support-matrix?view=sql-server-2017看起来 JDBC 4.0 可以与 SQL Server 2016 一起使用。

关于可能发生的事情有什么想法吗?

最佳答案

尝试添加“trustServerCertificate=true;”到连接字符串示例: jdbc:sqlserver://NEUTRON\SQL2017;user=sa;password=password123;integratedSecurity=false;trustServerCertificate=true;

关于java - SQL Server JDBC 错误 : The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57595772/

相关文章:

sql-server - 如何设置新的 SQL Server 数据库以允许将来可能的复制?

windows - 无法在 Atom 中安装软件包,SSL 问题

java - 尝试显示用户从数组输入的数字

java - AlarmManager 立即触发警报

java - 在tomcat上获取变量的描述

sql - 为什么同一个 try catch block 有两个不同的结果

sql-server - 探测残差与连接谓词

java - 对于大数字,从 DecimalFormat.format() 获取不正确的结果

Firebase TLS 限制

ssl - 浏览器重定向到 https