我是 SQL(Microsoft SQL Server Management)新手,我正在尝试将其与 IntelliJ 连接
我收到以下错误:
com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server 建立安全连接。错误:“PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径”。
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 https://i.stack.imgur.com/FlaRU.png
任何帮助表示赞赏!
Add encrypt=true
and trustServerCertificate=true
到连接网址。
String connectionURL = "jdbc:sqlserver://localhost:10020;databaseName=mydatabase;user=me;password=random_password;encrypt=true;trustServerCertificate=true";
微软博客参考 -link https://techcommunity.microsoft.com/t5/azure-database-support-blog/pkix-path-building-failed-unable-to-find-valid-certification/ba-p/2591304
找到下面的摘录 -
这是 Java 证书存储中的一个问题。作为一个快速解决方法,如果
您在连接字符串中启用 TrustServerCertificate=True ,
JDBC 连接成功。当 TrustServerCertificate 设置为
true,传输层将使用 SSL 来加密通道并
绕过遍历证书链来验证信任。如果
TrustServerCertificate 设置为 true 并打开加密,
即使加密,也将使用服务器上指定的加密级别
设置为 false。否则连接会失败。然而,对于
出于安全考虑,不建议绕过
证书验证。因此,要解决该问题,请按照以下步骤操作
下面更改连接字符串并导入所需的
证书。
更改连接字符串以指向 Java 证书路径
String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
"databaseName=AdventureWorks;integratedSecurity=true;" +
"encrypt=true; trustServerCertificate=false;" +
"trustStore= C:\Program Files\Java\jdk-14.0.2\lib\cacert;trustStorePassword=changeit";
导入本文提到的所有证书document https://www.microsoft.com/pki/mscorp/cps/default.htm.
注意:要将上述证书导入密钥库cacerts,请
使用以下命令,请注意您必须提及信任库和
连接字符串中的信任库密码才能成功连接。
在 Java 证书存储区中导入缺少的证书的步骤
从这里下载所有证书,将它们存储在客户端的某个位置
主机,然后使用 keytool 实用程序将这些证书导入到
信任库。请按照以下步骤操作:
保存上述 MS 文档中的所有证书。 Keytool 实用程序位于
默认 Java 位置的 bin 文件夹 (C:\Program
文件\Java\jdk-14.0.2\bin)。您需要使用命令提示符进行导航
到那个位置。然后就可以使用keytool命令导入了
之前保存的证书。当提示输入密码时,插入
输入密码“changeit”
命令示例:
keytool -importcert -trustcacerts -alias TLS1 -file
"C:\Users\Documents\Microsoft RSA TLS CA 01.crt" -keystore "C:\Program
Files\Java\jdk-14.0.2\lib\security\cacerts"
keytool -importcert -trustcacerts -alias TLS2 -file
"C:\Users\Documents\Microsoft RSA TLS CA 02.crt" -keystore "C:\Program
Files\Java\jdk-14.0.2\lib\security\cacerts"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)