簡體   English   中英

JDBC連接問題Java證書異常

[英]JDBC Connection Issue Java Certificate Exception

我能夠使用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:無法在安全通信中驗證服務器的名稱ClientConnectionId:b7c55361-d82f-4bc1-b1be-124d18433c3b java.security.cert.CertificateException:無法在安全通信層(SSL)初始化期間驗證服務器的名稱。

atcom.microsoft.sqlserver.jdbc.TDSChannel $ HostNameOverrideX509TrustManager.checkServerTrusted(IOBuffer.java:1384)上的atcom.microsoft.sqlserver.jdbc.TDSChannel $ HostNameOverrideX509TrustManager.validateServerNameInCertificate(IOBuffer.java:1491)在sun.security.ssl.AbstractTrust位於sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1488)處的checkServerTrusted(SSLContextImpl.java:922)位於sun.security.ssl.Handshaker處的sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)處的證書sun.security.ssl上的.processLoop(Handshaker.java:979).sun.security.ssl上的Handshaker.process_record(Handshaker.java:914).sun.security.ssl上的SSLSocketImpl.readRecord(SSLSocketImpl.java:1062)。 com.microsoft.sqlserver上的sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)上的SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375)在com.microsoft.sqlserver上的sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) .jdbc.TDSChannel.enableSSL(IOBuffer.java:1688) 在com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1977)在com.microsoft.sqlserver.jdbc.SQLServerServer.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。在sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在sun.reflect。 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)上的java.lang.reflect.Method.invoke(Method.java:497)上的DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) .transport $ 1.run(Transport.java:200)位於sun.rmi.transport.Transport $ 1.ru n(Transport.java:197),位於java.security.AccessController.doPrivileged(本機方法),位於sun.rmi.transport.Transport.serviceCall(Transport.java:196),位於sun.rmi.transport.tcp.TCPTransport.handleMessages(位於sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run0(TCPTransport.java:826)的TCPTransport.java:568)位於sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.lambda $ run $ 256(TCPTransport.java:683)的TCPTransport.java:826) ),位於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)

感謝你的幫助。 我進行了調查,發現問題可能與我升級到OS Sierra然后DataGrip似乎壞了有關。 我發現的解決方案如下:

如果未設置連接客戶端的主機名或以.local結尾,則連接將失敗。 設置主機名后,它又可以工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM