Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JDBC连接问题Java证书异常_Java_Sql Server_Macos_Jdbc_Azure Sql Database - Fatal编程技术网

JDBC连接问题Java证书异常

JDBC连接问题Java证书异常,java,sql-server,macos,jdbc,azure-sql-database,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.

我能够使用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....
我尝试过更新SQLJDBC驱动程序,但仍然看不到数据库内容。有什么想法吗

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

这是我能够找到的堆栈跟踪:[08S01]驱动程序无法找到 使用SSL与SQL Server建立安全连接。错误: “java.security.cert.CertificateException:无法验证 安全通信层(SSL)初始化中的服务器 句号。客户端连接ID: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.AbstractTrustManagerRapper.checkServerTrusted(SSLContextImpl.java:922)sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1488)和sun.security.ssl.Handshaker.processMessage(ClientHandshaker.java:216)的sun.security.ssl.Handshaker.processLoop(Handshaker.java:979)和sun.security.ssl.Handshaker.Handshaker.process\u记录(Handshaker.java:914)(SSLSocketImpl.java:1062)位于sun.security.ssl.SSLSocketImpl.performinialhandshake(SSLSocketImpl.java:1375)位于sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403)位于sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387)位于com.microsoft.sqlserver.jdbc.TDSChannel.enablesssl(IOBuffer.java:1688)在com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1977)在com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)在com.microsoft.sqlserver.jdbc.SQLServerConnection.connectioninternal(SQLServerConnection.java:1459)在com.microsoft.sqlserver.jdbc.SQLServerConnection.connection(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.invoke(NativeMethodAccessorImpl.invoke)在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)上在sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)的sun.rmi.transport.transport$1.run(transport.java:200)的sun.lang.reflect.Method.invoke(DelegatingMethodAccessorImpl.java:43)的sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:323)的java.invoke(DelegatingMethodAccessorImpl.java:43)中位于sun.rmi.transport.tcp.tcptTransport.handleMessages(tcptTransport.java:568)的sun.rmi.transport.transport.tcp.tcptTransport.handleMessages(tcptTransport.java:568)的sun.rmi.transport.transport.serviceCall(transport.java:196)的java.security.AccessController.doPrivileged(本机方法)位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.lambda$run$256(tcpttransport.java:683),位于java.security.AccessController.doPrivileged(本机方法),位于sun.rmi.transport.tcp.tcpttransport$ConnectionHandler.run(tcpttransport.java:682),位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)java.lang.Thread.run(Thread.java:745)的java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

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


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

您的代码是什么样子的?我正在使用DataGrip,一个Mac应用程序来查看数据库表、运行查询等,我想知道microsoft是否更新了jdbc驱动程序或其他尝试添加SSL c的东西ert到您的密钥库。我可以尝试,但之前不需要这样做,我正在连接到SQL Azure在这种情况下,我如何获得SSL证书?另一个更新。我使用了Azure告诉我的确切连接字符串,但现在看到“到SQL Azure的连接失败断开管道”消息。不确定这是否适用于操作系统Sierra的其他SSL/SSH应用程序,但希望它能为其他一些应用程序指明正确的方向。很明显,几天后它就不再工作了,我不相信我对它做了任何更改。有人有幸使用Mac SQL客户端连接到SQL Azure吗?