为了账号安全,请及时绑定邮箱和手机立即绑定

PKIX路径构建失败:无法找到请求目标的有效证书路径

PKIX路径构建失败:无法找到请求目标的有效证书路径

慕后森 2019-09-02 14:46:33
我正在调用以下客户端的一些HTTPS Web服务:import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintStream;import java.net.HttpURLConnection;import java.net.URL;import javax.net.ssl.HttpsURLConnection;/** * Handles http and https connections. It sends XML request over http (or https) * to SOAP web service and receive the XML reply. *  * @author mhewedy * @date 30.10.2010 */public class HttpWSXmlClient{    private final String ws_url;    private byte[] requestData;    public HttpWSXmlClient(String wsUrl)    {        this.ws_url = wsUrl;    }    public void readRequest(String xmlRequestFilePath)    {        try        {            InputStream istream = new FileInputStream(xmlRequestFilePath);            byte[] data = stream2Bytes(istream);            istream.close();            this.requestData = data;        } catch (Exception e)        {            throw new RuntimeException(e.getMessage());        }    }    /**     *      * @param ps     *            PrintStream object to send the debugging info to.     * @return     * @throws IOException     */我是否需要将任何证书放在jdk / jre / lib / security中?另外,我有一个xxx_IE.crt和xxx_FX.crt(分别用于Firefox和IE,它们不适用于上面的Java客户端,所以我需要Java客户端的特定证书吗?
查看完整描述

3 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

Java 8解决方案:我刚遇到这个问题并通过将远程站点的证书添加到我的Java密钥库来解决它。我的解决方案基于myshittycode博客的解决方案,该解决方案基于mykong博客中的先前解决方案。这些博客文章解决方案归结为下载名为InstallCert的程序,该程序是一个Java类,您可以从命令行运行以获取证书。然后,继续在Java的密钥库中安装证书。


该InstallCert自述工作完美的我。您只需运行以下命令:


javac InstallCert.java

java InstallCert [host]:[port](在运行命令时输入要在列表中添加的证书的给定列表编号 - 可能只是1)

keytool -exportcert -alias [host]-1 -keystore jssecacerts -storepass changeit -file [host].cer

sudo keytool -importcert -alias [host] -keystore [path to system keystore] -storepass changeit -file [host].cer

如果需要,请参阅引用的README文件以获取示例。


查看完整回答
反对 回复 2019-09-02
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

以下是我用于将网站的公共证书安装到系统密钥库以供使用的解决方案。


使用以下命令下载证书:


unix,linux,mac


openssl s_client -connect [host]:[port|443] < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > [host].crt

视窗


openssl s_client -connect [host]:[port|443] < NUL | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > [host].crt

这将创建一个可用于导入密钥库的crt。


使用以下命令安装新证书:


keytool -import -alias "[host]" -keystore [path to keystore] -file [host].crt

这将允许您从导致异常的站点导入新证书。


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 903 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信