【问题标题】:JDBC Connection Issue Java Certificate ExceptionJDBC 连接问题 Java 证书异常
【发布时间】:2017-09-05 03:48:41
【问题描述】:

我能够使用 DataGrip 附带的 JDBC 驱动程序(我使用的是 Mac)并看到以下错误消息,之前它工作得非常好,我没有打扰任何东西:

Connection to SQL Azure failed
Driver cannot establish (SSL) connection SQL Server
Error: "java.security.cert.CertificateException: cannot authenticat 
(SSL)  ClientConnectionId:d66ab....

我已尝试更新 SQL JDBC 驱动程序,但仍然看不到数据库内容。有什么想法吗?

编辑:这是我能够找到的堆栈跟踪:

这是我能够找到的堆栈跟踪:[08S01] 驱动程序无法 使用 SSL 与 SQL Server 建立安全连接。错误: “java.security.cert.CertificateException:无法验证名称 服务器在安全通信层 (SSL) 初始化 ”。 ClientConnectionId:b7c55361-d82f-4bc1-b1be-124d18433c3b java.security.cert.CertificateException:无法验证名称 服务器在安全通信层 (SSL) 初始化 期间

atcom.microsoft.sqlserver.jdbc.TDSChannel$HostNameOverrideX509TrustManager.validateServerNameInCertificate(IOBuffer.java:1491) 在 com.microsoft.sqlserver.jdbc.TDSChannel$HostNameOverrideX509TrustManager.checkServerTrusted(IOBuffer.java:1384) 在 sun.security.ssl .AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:922) 在 sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1488) 在 sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216) 在 sun.security。 ssl.Handshaker.processLoop(Handshaker.java:979) 在 sun.security.ssl.Handshaker.process_record(Handshaker.java:914) 在 sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) 在 sun.security .ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) 在 sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) 在 sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) 在 com。 microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:16 88) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1977) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection .connectInternal(SQLServerConnection.java:1459) 在 com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773) 在 com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168) 在 com。 intellij.database.remote.jdbc.impl.RemoteDriverImpl.connect(RemoteDriverImpl.java:27) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun。 reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323) 在 sun.rmi java.lang.reflect.Method.invoke(Method.java:497) .transport.Transport$1.run(Transport.java:200) 在 sun.rmi.transport.Transport$1 .run(Transport.java:197) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:196) at sun.rmi.transport.tcp.TCPTransport.handleMessages (TCPTransport.java:568) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$256(TCPTransport.java: 683) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: 1142) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 在 java.lang.Thread.run(Thread.java:745)

【问题讨论】:

  • 你的代码是什么样子的?
  • 我正在使用 DataGrip,一个 Mac 应用程序来查看数据库表、运行查询等,我想知道微软是否更新了 jdbc 驱动程序或什么
  • 尝试将 SSL 证书添加到您的密钥库。
  • 我可以试试,之前不需要这样做,在这种情况下我连接到 SQL Azure,我将如何获得 SSL 证书?
  • 另一个更新。我使用了 Azure 告诉我的确切连接字符串,但现在看到“连接到 SQL Azure 失败的管道损坏”消息。

标签: java sql-server macos jdbc azure-sql-database


【解决方案1】:

感谢大家的帮助。我进行了调查,发现问题可能与我升级到 OS Sierra 后 DataGrip 似乎坏了有关。我找到的解决方案如下:

如果连接客户端的主机名未设置或以 .local 结尾,则连接将失败。设置主机名后,它又可以工作了。

【讨论】:

  • 不确定这是否适用于 OS Sierra 的其他 SSL/SSH 应用程序,但希望它可以为其他一些人指明正确的方向
  • 没那么快。显然几天后它不再工作了,我不相信我已经对其进行了任何更改。有没有人有幸通过 Mac SQL 客户端连接到 SQL Azure ?
猜你喜欢
  • 2012-06-03
  • 1970-01-01
  • 2013-06-13
  • 2023-03-23
  • 1970-01-01
  • 2012-09-09
  • 2019-10-21
  • 2010-10-03
相关资源
最近更新 更多