微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求的有效认证路径

如何解决PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求的有效认证路径

我有以下 java 代码来发送 POST 请求。

执行时返回以下错误

PKIX 路径构建失败: sun.security.provider.certpath.SunCertPathBuilderException:无法 找到到请求目标的有效认证路径

从我对这个主题的研究来看,原因通常是因为 POST 请求的 url 是 https,并且它的证书需要添加到 jdk 密钥库(cacerts)中。

所以我从 https url 下载了证书并添加到 cacerts 中,如下所示。

keytool -import -alias testcert1 -keystore "...\jdk1.7.0_80\jre\lib\security\cacerts" -file certificate.cer

运行在\jdk1.7.0_80\jre\lib\security\cacerts

证书成功导入cacerts。

运行命令读取cacerts,显示证书。

错误仍然存​​在。

关于可能是什么问题的任何其他想法?

应用程序查询的 cacerts 是否可以在其他地方?

如果是这样,如何知道在哪里。

import javax.net.ssl.SSLContext;
import org.apache.http.ssl.SSLContexts;
import org.apache.http.client.HttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.client.methods.HttpPost;
import com.google.gson.Gson;
import org.apache.http.entity.StringEntity;
import org.apache.http.HttpResponse;

public void sendPostRequest(Object src)
{
    SSLContext context = SSLContexts.custom().useProtocol("TLSv1.2").build();

    HttpClient client = HttpClientBuilder.create().setSSLContext(context).build();
    HttpPost httpPost = new HttpPost(httpsurl);

    httpPost.setHeader("User-Agent","abc");
    httpPost.setHeader("Content-Type","application/json; charset=UTF-8");   
    httpPost.setHeader("OtherInfo","xyz");
    httpPost.setHeader("Accept","application/json");

    Gson gson = new Gson();

    StringEntity input;
    input = new StringEntity(gson.toJson(src));

    input.setContentType("application/json");
    httpPost.setEntity(input);

    HttpResponse httpResponse = client.execute(httpPost);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。