【发布时间】:2018-06-04 03:47:45
【问题描述】:
我有一个在 Domino 服务器上运行的 Java 代理。它在 Domino 9.0.1 FP7 版本上运行良好。 MS Windows 服务器是 2003。等待 SQL 服务器版本。
现在我们将 Domino 服务器升级到 9.0.1 FP9。 JVM 从 1.6 升级到 1.8。
我假设此异常错误是由 JVM 或 Java 策略引起的,因为我将 JDBC 驱动程序从 4.2 升级到 6.2.2 试图修复此问题但没有成功(同样的错误)。
原始连接字符串(JDBC驱动...jvm/lib/ext/mssql-jdbc-6.2.2.jre8.jar)
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://SERVER";
连接字符串相同的结果(JDBC 驱动程序 ...jvm/lib/ext/mssql-jdbc-6.2.2.jre8.jar) - 添加了 encrypt=false。
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://SERVER:1433;encrypt=false;";
例外
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:e8a3a2c4-d9a9-4f82-a63f-967cae0c29f0".
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2435)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1816)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2022)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1687)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1528)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:866)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:569)
at java.sql.DriverManager.getConnection(DriverManager.java:675)
at java.sql.DriverManager.getConnection(DriverManager.java:258)
at OrderTrackOrders.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
Caused by: java.io.IOException: SQL Server did not return a response. The connection has been closed. ClientConnectionId:e8a3a2c4-d9a9-4f82-a63f-967cae0c29f0
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.ensureSSLPayload(IOBuffer.java:774)
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.readInternal(IOBuffer.java:830)
at com.microsoft.sqlserver.jdbc.TDSChannel$SSLHandshakeInputStream.read(IOBuffer.java:821)
at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.readInternal(IOBuffer.java:1003)
at com.microsoft.sqlserver.jdbc.TDSChannel$ProxyInputStream.read(IOBuffer.java:991)
at com.ibm.jsse2.b.a(b.java:272)
at com.ibm.jsse2.b.a(b.java:148)
at com.ibm.jsse2.at.a(at.java:19)
at com.ibm.jsse2.at.i(at.java:627)
at com.ibm.jsse2.at.a(at.java:689)
at com.ibm.jsse2.at.startHandshake(at.java:432)
at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1753)
... 10 more
【问题讨论】:
-
什么版本的 SQL Server?是否已将 SQL Server 配置为强制协议加密? SQL 日志中是否有更多关于登录失败的详细信息?
-
女士 windows 2003 服务器。一旦我发现 SQL Server 版本,我会报告。如果 O/S 不支持 TLS 1.2,我有什么选择?
-
您真的不应该在不支持的操作系统上进行更改。如果在 SQL Server 上设置了强制加密,也许您可以将其关闭并在不加密的情况下连接。
-
这是一个想法,我是否必须关注可能与 SSL 连接的其他进程?例如 Web 服务器,其他东西会因 SSL 而中断吗?
-
@david,你能看看这个stackoverflow.com/questions/48007778/…
标签: java sql-server ssl jdbc jvm