我正在尝试使用 JDBC 驱动程序建立与 Sybase ASE 16.0 的 SSL 连接。在服务器上,通过交互式 SQL,我可以使用 SSL 访问 ASE 服务器。我正在使用具有以下连接字符串的 Jconnect 4 (jconn4.jar) 和 JDK 8:jdbc:sybase:Tds:host:port/dbname?ENABLE_SSL=true。使用 keytool 导入到 java 应用程序信任库的服务器证书。我已经完成了这里已经提出的另一个问题,但这并不能帮助我纠正这个问题。测试代码如下。
try {
Class.forName("com.sybase.jdbc4.jdbc.SybDriver");
Connection con = DriverManager.getConnection(
"jdbc:sybase:Tds:host:5000/master?ENABLE_SSL=TRUE", "sa",
"password");
System.out.println("*********Connected**********");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select @@ssl_ciphersuite");
int i = 1;
while (rs.next()) {
System.out.println("Row: " + i);
System.out.println("ID: " + rs.getString(1).trim());
System.out.println(" ");
i = i + 1;
}
con.close();
} catch (Exception e) {
e.printStackTrace();
}
我的 JDBC 代码抛出异常。应通过安全网络建立连接,但面临以下错误。
java.sql.SQLException: JZ00L: Login failed. Examine the SQLWarnings chained to this exception for the reason(s).
at com.sybase.jdbc4.jdbc.SybConnection.getAllExceptions(Unknown Source)
at com.sybase.jdbc4.jdbc.SybConnection.handleSQLE(Unknown Source)
at com.sybase.jdbc4.jdbc.SybConnection.a(Unknown Source)
at com.sybase.jdbc4.jdbc.SybConnection.handleHAFailover(Unknown Source)
at com.sybase.jdbc4.jdbc.SybConnection.<init>(Unknown Source)
at com.sybase.jdbc4.jdbc.SybConnection.<init>(Unknown Source)
at com.sybase.jdbc4.jdbc.SybDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at com.testing.Test.main(Test.java:41)
我检查了 Sybase 日志,看到以下错误:
kernel SSL or Crypto Error Message: 'The SSL handshake failed. Root error: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol'.
我浏览了多个 Sybase 文档,但没有运气。任何帮助都感激不尽。提前致谢!!