我是SQL(Microsoft SQL Server管理)的新手,我正在尝试将其与IntelliJ连接起来
我收到以下错误:com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法使用安全套接字层(SSL)加密与SQL Server建立安全连接.错误:“PKIX路径构建失败:安全性提供者证书路径生成器异常:找不到请求目标”有效证书路径
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class MyJDBC {
public static void main(String[] args) {
String connectionURL = "jdbc:sqlserver://localhost:10020;databaseName=mydatabase;user=me;password=random_password";
try {
System.out.print("Connecting to the server......");
try (Connection connection = DriverManager.getConnection(connectionURL)) {
System.out.println("Connected to the Server.");
}
}catch (Exception e){
System.out.println("I am not connected to the Server");
e.printStackTrace();
}
}
}
我的库LIB上有这个
任何帮助都是感激不尽的!
2条答案
按热度按时间mjqavswn1#
将
encrypt=true
和trustServerCertificate=true
添加到连接url。Microsoft博客参考-link
下面是其中的摘录-
这是Java证书存储区中的问题。作为一种快速解决方法,如果在连接字符串中启用TrustServerCertificate=True,则JDBC连接将成功。当TrustServerCertificate设置为True时,传输层将使用SSL加密通道,并绕过遍历证书链来验证信任。如果TrustServerCertificate设置为True且加密已打开,即使将Encrypt设置为false,也将使用服务器上指定的加密级别。否则,连接将失败。但是,出于安全考虑,建议不要绕过证书验证。因此,要解决此问题,请按照以下步骤更改连接字符串并导入所需的证书。
将连接字符串更改为指向Java证书路径
一个月两个月一个月一个月一个月三个月一个月一个月四个月一个月一个月五个月一个月
导入此document中提到的所有证书。
注意:要将上述证书导入到密钥库cacerts中,请使用下面的命令。请注意,您必须在连接字符串中提到truststore和truststore密码,才能成功连接。
从此处下载所有证书,将其存储在客户端主机上的某个位置,然后使用keytool实用程序将这些证书导入到信任库中。请执行以下步骤:
保存上述MS文档中的所有证书。Keytool实用程序位于默认Java位置(C:\Program Files\Java\jdk-14.0.2\bin)的bin文件夹中。您需要使用命令提示符导航到该位置。然后,您可以使用keytool命令导入先前保存的证书。当提示输入密码时,在密码中插入密钥“changeit”
命令示例:
x1个月6个月1个月x1个月7个月1个月x1个月8个月
一个月九个月一个月一个月一个月一个月一个月一个月一个月
hts6caw32#
下面是我的工作jdbc:sqlserver://主机;信任服务器证书=真;集成安全性=真;身份验证方案=NTLM