2017-04-10 168 views
0

我能够使用DataGrip附带的JDBC驱动程序(我正在使用Mac)并看到以下错误消息,之前它的工作状况非常好,而且我没有打扰任何事情:JDBC连接问题Java证书异常

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

我试过更新SQL JDBC驱动程序,但仍看不到数据库内容。有任何想法吗 ?

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

这是堆栈跟踪我能找到:到 使用SSL [08S01]驱动程序无法建立与SQL Server.Error安全连接: “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)at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1488)at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)at sun.security .ssl.Handshaker.processLoop(Handshaker.java:979)at sun.security.ssl.Handshaker.process_record(Handshaker.java:914)at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)at sun。 security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)at sun.security.ssl.SSLS ocketImpl.startHandshake(SSLSocketImpl.java:1387)at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1688)at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1977)at com .microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection .java:773)at com.intellij.database.remote.jdbc.impl.RemoteDriverImpl.connect(RemoteDriverImpl.java:27)at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)。 reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke( Method.java:497)在sun.rmi.server.UnicastServerRef.dispat CH(UnicastServerRef.java:323)在sun.rmi.transport.Transport $ 1.run(Transport.java:200)在sun.rmi.transport.Transport $ 1.run(Transport.java:197)在java.security.AccessController在sun.rmi.transport.Transport.serviceCall(Transport.java:196)在sun.rmi.transport.tcp .doPrivileged(本机方法)在sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) .TCPTransport $ ConnectionHandler.run0(TCPTransport.java:826)在sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.lambda $在运行$ 256(TCPTransport.java:683)在java.security.AccessController.doPrivileged(本机方法) sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run(TCPTransport.java:682)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run( ThreadPoolExecutor.java:617)在java.lang.Thread.run(Thread.java:745)

+0

你的代码是怎样的? –

+0

我正在使用DataGrip,一个Mac应用程序来查看数据库表,运行查询等,我想知道如果微软更新了jdbc驱动程序或什么 – fobius

+0

尝试将SSL证书添加到您的密钥库。 – JonahCui

回答

0

感谢你的帮助。我调查了一下,发现问题可能与我升级到OS Sierra的事实有关,然后DataGrip似乎中断了。我找到的解决方案如下:

如果连接客户端的主机名未设置或以.local结尾,则连接将失败。在设置主机名后,它再次运行。

+0

不知道这是否适用于OS Sierra的其他SSL/SSH应用程序,但希望它可以指向其他一些正确的方向 – fobius

+0

好得不那么快。显然它几天后不再工作,我不相信我已经做了任何改变。有没有人有幸通过Mac SQL Client连接到SQL Azure? – fobius