JDBC连接问题Java证书异常

时间:2017-04-10 07:43:01

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

我能够使用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)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)在sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)在sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)在融为一体。 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)在融为一体。 intellij.database.remote.jdbc.impl.RemoteDriverImpl.connect(RemoteDriverImpl.java:27)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)在阳光下。在sun.rmi的sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)的java.lang.reflect.Method.invoke(Method.java:497)中反映.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) .transport.Transport $ 1.run(Transport.java:200)at sun.rmi.transport.Transport $ 1 .RUN(Transport.java:197)在java.security.AccessController.doPrivileged(本机方法)在sun.rmi.transport.Transport.serviceCall(Transport.java:196)在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 $运行$ 256(TCPTransport.java: 683)at java.security.AccessController.doPrivileged(Native Method)at sun.rmi.transport.tcp.TCPTransport $ ConnectionHandler.run(TCPTransport.java:682)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java: 1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)at java.lang.Thread.run(Thread.java:745)

1 个答案:

答案 0 :(得分:0)

感谢大家的帮助。我已经调查过,发现这个问题可能与我升级到OS Sierra的事实有关,然后DataGrip似乎破了。我找到的解决方案如下:

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

相关问题