【问题标题】:Java connection to a https URLJava 连接到 https URL
【发布时间】:2013-03-12 05:51:57
【问题描述】:

我用 Java 编写了一个小代码来访问 URL。 该代码适用于 HTTP 连接,但适用于 HTTPS 失败(错误粘贴在下面)

任何解决此问题的帮助将不胜感激。

代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;


public class ConnectToWCProd {

    public static void main(String[] args) throws Exception {

        String userPassword = "user1:user1";
        String encoding = new sun.misc.BASE64Encoder().encode (userPassword.getBytes());

        //URL oracle = new URL("http://<URL>/");
        URL oracle = new URL("https://<URL>");
        URLConnection yc = oracle.openConnection();

        yc.setRequestProperty("Authorization", "Basic " + encoding);

        BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) 
            System.out.println(inputLine);
        in.close();
    }

}

错误:

线程“main”中的异常 javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径 在 com.sun.net.ssl.internal.ssl.Alerts.getSSLException(未知来源) 在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(未知来源) 在 com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(未知来源) 在 com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(未知来源) 在 com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(未知来源) 在 com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(未知来源) 在 com.sun.net.ssl.internal.ssl.Handshaker.processLoop(未知来源) 在 com.sun.net.ssl.internal.ssl.Handshaker.process_record(未知来源) 在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(未知来源) 在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(未知来源) 在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(未知来源) 在 com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(未知来源) 在 sun.net.www.protocol.https.HttpsClient.afterConnect(未知来源) 在 sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(未知来源) 在 sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知来源) 在 sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(未知来源) 在 ConnectToWCProd.main(ConnectToWCProd.java:21) 原因:sun.security.validator.ValidatorException:PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径 在 sun.security.validator.PKIXValidator.doBuild(未知来源) 在 sun.security.validator.PKIXValidator.engineValidate(未知来源) 在 sun.security.validator.Validator.validate(未知来源) 在 com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(未知来源) 在 com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(未知来源) 在 com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(未知来源) ... 13 更多 原因:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径 在 sun.security.provider.certpath.SunCertPathBuilder.engineBuild(未知来源) 在 java.security.cert.CertPathBuilder.build(未知来源) ... 19 更多

【问题讨论】:

标签: java url ssl https


【解决方案1】:

【讨论】:

    【解决方案2】:

    阅读此link

    您必须将证书包含在jre/lib/security/cacerts(默认路径)中

    【讨论】:

      猜你喜欢
      • 2013-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-11
      • 2015-10-21
      相关资源
      最近更新 更多