【问题标题】:Not able to connect spring boot application with SQL SERVER Database无法将 Spring Boot 应用程序与 SQL SERVER 数据库连接
【发布时间】:2020-12-07 15:08:32
【问题描述】:

我正在尝试将我的 Spring Boot 应用程序与 sql server 数据库连接,但它抛出异常并说:

020-08-18 16:58:11.580 ERROR 14800 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization.

    com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "SQL Server did not return a response. The connection has been closed. .

但是我可以连接 oracle 数据库,但当我尝试连接 sql server 时会出现问题

这是 application.properties 文件

spring.datasource.url=jdbc:sqlserver://192.168.*.*\\DB2008;databaseName=mydbname
spring.datasource.username=myuser
spring.datasource.password=mypassword
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect

这里是详细的错误:

2020-08-18 16:58:11.580 ERROR 14800 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization.

com.microsoft.sqlserver.jdbc.SQLServerException: The driver could not establish a secure connection to SQL Server by using Secure Sockets Layer (SSL) encryption. Error: "SQL Server did not return a response. The connection has been closed. ClientConnectionId:37aa16bd-92f0-4af0-a090-06f2349cb51a".
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2924) ~[mssql-jdbc-7.4.0.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1881) ~[mssql-jdbc-7.4.0.jre8.jar:na]
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2484) ~[mssql-jdbc-7.4.0.jre8.jar:na]

【问题讨论】:

    标签: java sql-server spring spring-boot connection


    【解决方案1】:

    在这种情况下,您可以尝试以下步骤。

    1. 确保您的 SQL 服务器正在本地运行(您是否尝试连接到删除的 SQL 服务器?)
    2. 或者,在您的数据库名称之后的 URL 中使用此语句 jdbc:mysql://IP:3306/someDatabase?autoReconnect=true&useSSL=false

    【讨论】:

    • 数据库位于不同的机器上,但它在组织内。
    • 是的,我试过它抛出相同的异常 :( 驱动程序无法通过使用安全套接字层 (SSL) 加密建立与 SQL Server 的安全连接。错误:“SQL Server 未返回响应。
    • 您使用的 JDK 版本和供应商是什么,例如 oracle JDK 或 Open JDK?因为您的 JDK 似乎支持 TLS 1.2,但默认情况下它仍然使用 TLS 1.0,因此我们看到客户端应用程序使用 TLS 1.0 客户端 hello 启动 TLS 3 次握手并且连接失败。为了解决这个问题,我们需要根据您使用的 JDK 覆盖一些属性!请看this article for your reference
    • 我正在使用 oracle jdk 1.8 。是的,我也搜索了很多,发现了同样的问题。所以我认为你发现的问题是正确的。我也浏览了您分享的文章,但我没有找到文章中提到的用于解决问题的目录。因为我没有使用 IBMJava,所以没有与之相关的目录。你能帮我解决它.. 在此先感谢。并感谢您的回复。
    【解决方案2】:

    我已经按照以下步骤解决了这个问题:

    编辑 C:\Program Files\Java\jdk1.8.0_251\jre\lib\security\java.security

    找到下面的变量,它将有多个逗号分隔的值删除我在下面提到的一个值:

    查找:jdk.tls.disabledAlgorithms=

    删除:3DES_EDE_CBC

    这应该可以解决它!

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-17
    • 2017-02-01
    • 2017-10-08
    • 2020-02-26
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    相关资源
    最近更新 更多