2017-04-10 134 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