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

我正在调用以下客户端的一些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客户端的特定证书吗?

慕后森
浏览 904回答 3
3回答

阿波罗的战车

Java 8解决方案:我刚遇到这个问题并通过将远程站点的证书添加到我的Java密钥库来解决它。我的解决方案基于myshittycode博客的解决方案,该解决方案基于mykong博客中的先前解决方案。这些博客文章解决方案归结为下载名为InstallCert的程序,该程序是一个Java类,您可以从命令行运行以获取证书。然后,继续在Java的密钥库中安装证书。该InstallCert自述工作完美的我。您只需运行以下命令:javac InstallCert.javajava InstallCert [host]:[port](在运行命令时输入要在列表中添加的证书的给定列表编号 - 可能只是1)keytool -exportcert -alias [host]-1 -keystore jssecacerts -storepass changeit -file [host].cersudo keytool -importcert -alias [host] -keystore [path to system keystore] -storepass changeit -file [host].cer如果需要,请参阅引用的README文件以获取示例。

慕桂英4014372

以下是我用于将网站的公共证书安装到系统密钥库以供使用的解决方案。使用以下命令下载证书:unix,linux,macopenssl 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这将允许您从导致异常的站点导入新证书。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python