java请求接口报错:sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provi

1.背景

一个下载文件的服务在A机器上可以正常下载,但是子啊B机器上下载保存,提示如下:

下载处理异常:请求接口异常:sun.security.validator.ValidatorException:
 PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: 
 unable to find valid certification path to requested target

通过报错信息,大概报错的含义是,发送请求时证书检查失败(过期)等错误,

解决办法是,在发送请求前,添加一个信任所有证书的请求对象(SSLContentext)

2.解决步骤

修改下载文件的get请求方法,修改前的下载方法是:

 /**
     * 发送一个get请求
     *
     * @param url     请求地址
     * @param params  名值对参数
     * @param charset 编码
     * @return
     */
    public static String get(String url, Map<String, String> params,
                             String charset) {
        if (StringUtils.isBlank(url)) {
            return null;
        }
        try {
            if (params != null && !params.isEmpty()) {
                List<NameValuePair> pairs = new ArrayList<NameValuePair>
### DBeaver 连接 Hive 安全证书验证错误解决方案 当遇到 `sun.security.validator.ValidatorException` 和 `PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException` 错误时,这通常意味着 Java 应用程序无法找到有效的认证路径来验证服务器的 SSL/TLS 证书。对于 DBeaver 连接到 Hive 的情况,可以采取以下措施: #### 修改 JVM 参数配置 为了使 DBeaver 能够信任特定的 CA 或自签名证书,在启动 DBeaver 之前设置环境变量或者修改其快捷方式中的目标字段,加入如下参数[^1]: ```bash -Djavax.net.ssl.trustStore=/path/to/trusted/cacerts.jks \ -Djavax.net.ssl.trustStorePassword=changeit ``` #### 导入所需证书到 cacerts 文件 如果问题是由于缺少某些根证书引起的,则可以通过导入这些缺失的证书至 JDK/JRE 自带的信任存储文件 (cacerts) 来解决问题。具体操作命令如下所示[^3]: ```bash keytool -importcert -file /path/to/your_certificate.cer \ -alias your_alias_name \ -keystore "$JAVA_HOME/jre/lib/security/cacerts" \ -storepass changeit ``` #### 配置 Maven 设置(适用于通过 Maven 构建项目) 如果是基于 Maven 开发的应用,并且遇到了类似的依赖项下载失败的情况,那么还需要确保本地计算机上的 Maven 已经被正确设置了全局级别的 trustStore 属性。 另外需要注意的是,有时可能是因为网络代理的原因导致 HTTPS 请求受阻而引发此类异常;此时应检查是否有合适的 HTTP(S)_PROXY 变量已定义并生效于当前运行环境中。 以上方法应该可以帮助解决大部分由 PKIX Path Building Failed 引起的问题。不过值得注意的是,安全性和合规性始终是最重要的考虑因素之一,因此建议仅限于开发测试环境下使用上述手段绕过严格的SSL握手流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值