无法使用 sqljdbc4 连接到启用了 SSL 加密的 sql server 2012

无法使用 sqljdbc4 连接到启用了 SSL 加密的 sql server 2012

我正在尝试使用 sqljdbc4 将我的 Web 应用程序连接到启用了 SSL 加密的 SQL Server 2012,但出现以下错误:

com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server 建立安全连接。错误:“SQL Server 未返回响应。连接已关闭。ClientConnectionId:aae3c3a9-9b39-4141-aeda-577e06a28dfd”。在 com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667) 在 com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1668) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1323) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827) 在 com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012) 在 java.sql.DriverManager.getConnection(DriverManager.java:571) 在 java.sql.DriverManager.getConnection(DriverManager.java:215) ... 造成 41 个以上来自:java.io.IOException:SQL Server 未返回响应。连接已关闭。ClientConnectionId:aae3c3a9-9b39-4141-aeda-577e06a28dfd at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.ensureSSLPayload(IOBuffer.java:651) at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.java:708) at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.java:700) at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:895) at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:883) at sun.security.ssl.InputRecord.readFully(InputRecord.java:442) at sun.security.ssl.InputRecord.read(InputRecord.java:480) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:927) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1618)

请注意,服务器证书密钥大小超过 4k。当我尝试使用 SQL 管理工作室连接到 SQL 服务器时出现以下错误:

已成功与服务器建立连接,但在登录过程中出现错误。(提供程序:SSL 提供程序,错误:0 - 远程主机强制关闭现有连接。)(Microsoft SQL Server,错误:10054)

但是当我使用密钥大小小于 4k 的证书时,我能够连接而不会出现任何错误。减小证书大小不是可接受的解决方案,因此我该怎么做才能使用启用了 SSL 的 sqljdbc 4 并使用密钥大小大于 4k 的证书连接到 SQL Server 2012。

相关内容