“Encrypt”属性设置为“true”且 “trustServerCertificate”属性设置为“false”,但驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server 建立安全

com.microsoft.sqlserver.jdbc.SQLServerException: “Encrypt”属性设置为“true”且 “trustServerCertificate”属性设置为“false”,但驱动程序无法使用安全套接字层 (SSL) 加密与 SQL Server 建立安全连接:错误:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target。 ClientConnectionId:235f4c8c-84dd-41c5-9e44-f39b34dca841
at

我们先不管原理是什么,解决的方法是找出你连接数据库的代码

privat static final string?= "jdbc:sqlserver://localhost:1433;databaseName=StudentDB_New";

在这里插入图片描述
在后面加上encrypt=false就可以了

private static final String URL = "jdbc:sqlserver://localhost:1433;databaseName=StudentDB_New;encrypt=false";
### DBeaver 连接时出现 `unable to find valid certification path to requested target` 的解决方案 当在DBeaver中尝试通过JDBC连接到数据库并收到`unable to find valid certification path to requested target`错误消息时,这通常意味着客户端无法验证服务器提供的SSL证书的有效性。以下是几种可能的解决办法: #### 方法一:导入受信任的CA证书至Java KeyStore (JKS) 如果目标数据库使用自签名证书或来自不受信认证机构(CA)签发的证书,则需手动将其加入到运行环境所使用的Java密钥库(JKS)文件里。 1. 获取根证书或者中间件颁发者的公钥证书; 2. 使用命令行工具keytool将上述获得的.crt/.pem格式证书安装入$JAVA_HOME/jre/lib/security/cacerts位置下的keystore内[^1]; ```bash keytool -file /path/to/ca_certificate.pem -keystore $JAVA_HOME/jre/lib/security/cacerts ``` 3. 输入默认密码changeit完成操作后重启应用程序使更改生效。 #### 方法二:配置驱动程序属性设置跳过SSL校验(不推荐用于生产环境) 对于开发测试阶段而言,在不影响安全性的前提下也可以考虑临时关闭SSL握手过程中的主机名匹配以及绕过对远程站点的身份确认机制来快速解决问题。具体做法是在建立数据源链接字符串后面附加特定参数指示JVM忽略这些检查项[^3]。 例如针对SQL Server JDBC URL可做如下调整: ```properties jdbc:sqlserver://localhost;databaseName=myDB;encrypt=false; // 或者启用加密但允许自定义的信任管理器处理未知证书情况 jdbc:sqlserver://localhost;databaseName=myDB;encrypt=true;trustServerCertificate=true; ``` 需要注意的是这种方法虽然简单易行却存在安全隐患因此仅限于内部网络调试用途而不适合部署在线上正式版本当中。 #### 方法三:修改应用层面的安全策略实现更灵活控制 某些情况下或许并不希望改动全局范围内的Keystore内容也不愿意完全放弃必要的安全性保障措施这时就可以借助第三方类库比如Apache HttpClient所提供的API接口来自定义一套适用于当前项目的HTTPS访问规则从而达到既保证通信链路保密又不必担心因缺少相应凭证而中断服务的目的[^4]。 不过考虑到DBeaver本身是一个图形界面的应用软件所以除非确实有必要一般不会采取这种方式而是优先选用前两种更为简便有效的手段来进行故障排除工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值