Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQL Server JDBC错误:驱动程序无法使用安全套接字层(SSL)加密建立到SQL Server的安全连接_Java_Sql Server_Ssl_Jdbc_Database Administration - Fatal编程技术网

Java SQL Server JDBC错误:驱动程序无法使用安全套接字层(SSL)加密建立到SQL Server的安全连接

Java SQL Server JDBC错误:驱动程序无法使用安全套接字层(SSL)加密建立到SQL Server的安全连接,java,sql-server,ssl,jdbc,database-administration,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。这是个问题吗 历史: 上次我们将数据库服务器从SQLSe

背景:

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

  • 数据库服务器:
数据库服务器最近已从Windows 2016升级到Windows 2019,并从SQL server 2012升级到SQL server 2016(与应用程序用于连接的服务器名相同的并排升级),此服务器上没有Java。这是个问题吗

  • 历史:
上次我们将数据库服务器从SQLServer2008升级到SQLServer2012时,采用了相同的方法,应用程序运行良好

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

我们根本没有接触应用程序服务器,希望当数据库服务器启动时,由于它是同一个servername,它会正常启动,但应用程序由于上述错误而失败。 没有登录失败,因为我们测试了应用程序的登录名和密码,它工作正常

我看了以下内容:
但我们似乎无法理解是什么导致了这个问题,因为应用服务器上没有任何变化。 我在这里查看了JDBC版本与SQL Server matrix之间的兼容性
,JDBC 4.0似乎与SQL Server 2016兼容


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

好的,因此我们与Microsoft支持部门合作解决了这个问题,这就是我们达成的谅解

Microsoft将TLS 1.0和TLS 1.1添加/启用到数据库服务器,仅用于测试目的,因为Microsoft不再支持TLS 1.0。这将安全协议降低到较低的状态,但我们能够在应用程序服务器和数据库服务器之间建立SQL连接,但应用程序最初仍然无法连接。微软认为这是因为应用程序正在使用当前的连接提供程序/驱动程序,他们不支持该部分,因为这是Java/Oracle的JDBC驱动程序

在我们的例子中,应用程序在启用TLS 1.0和TLS 1.1后确实进行了连接。 这在您的情况下可能有效,也可能无效

因此,如果您有资源修改应用程序,建议的解决方案是更新应用程序的驱动程序、测试和重新部署

如果您没有应用程序的资源,则选项如下: 1.回滚到SQL Server的旧服务器。这可能奏效,但无法保证。 另外需要注意的是,SQL Server 2008和2008R2已不受支持,因此我们可以使用的最早版本(并且仍然受支持)将是SQL Server 2012,它可能无法解决此问题

2.打开安全门。这很可能解决问题,但绝对不建议这样做。这个问题很可能与过时的、不再受支持的安全提供商有关。因此,完全开放安全性可能会解决问题,但不建议这样做

3.重写应用程序,这不是最简单的选项,但却是Microsoft唯一完全推荐的选项


如果您想自己启用TLS,请查看此项和此项。进行此更改后,服务器将需要重新启动。

好的,因此我们与Microsoft支持人员一起解决了此问题,这是我们达成的谅解

Microsoft将TLS 1.0和TLS 1.1添加/启用到数据库服务器,仅用于测试目的,因为Microsoft不再支持TLS 1.0。这将安全协议降低到较低的状态,但我们能够在应用程序服务器和数据库服务器之间建立SQL连接,但应用程序最初仍然无法连接。微软认为这是因为应用程序正在使用当前的连接提供程序/驱动程序,他们不支持该部分,因为这是Java/Oracle的JDBC驱动程序

在我们的例子中,应用程序在启用TLS 1.0和TLS 1.1后确实进行了连接。 这在您的情况下可能有效,也可能无效

因此,如果您有资源修改应用程序,建议的解决方案是更新应用程序的驱动程序、测试和重新部署

如果您没有应用程序的资源,则选项如下: 1.回滚到SQL Server的旧服务器。这可能奏效,但无法保证。 另外需要注意的是,SQL Server 2008和2008R2已不受支持,因此我们可以使用的最早版本(并且仍然受支持)将是SQL Server 2012,它可能无法解决此问题

2.打开安全门。这很可能解决问题,但绝对不建议这样做。这个问题很可能与过时的、不再受支持的安全提供商有关。因此,完全开放安全性可能会解决问题,但不建议这样做

3.重写应用程序,这不是最简单的选项,但却是Microsoft唯一完全推荐的选项

如果您想自己启用TLS,请查看此项和此项。进行此更改后,服务器将需要重新启动