2

URLにアクセスするための小さなコードをJavaで作成しました。コードは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();
    }

}

エラー :

スレッド「メイン」の例外javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIXパスの構築に失敗しました:sun.security.provider.certpath.SunCertPathBuilderException:com.sunで要求されたターゲットへの有効な証明書パスが見つかりません.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source)at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source)at com.sun.net.ssl.internal.ssl.Handshaker .fatalSE(不明なソース)at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(不明なソース)at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(不明なソース)at com.sun .net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source)at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source)atcom.sun.net.ssl.internal.ssl。com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source)のHandshaker.process_record(Unknown Source)com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)のcom。 sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source)atsun.net.www.protocol.https.HttpsClient。 afterConnect(Unknown Source)at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)atsun.net.www.protocol。 ConnectToWCProd.main(ConnectToWCProd.java:21)のhttps.HttpsURLConnectionImpl.getInputStream(Unknown Source)原因:sun.security.validator.ValidatorException:PKIXパスの構築に失敗しました:sun.security.provider.certpath.SunCertPathBuilderException:sun.security.validator.PKIXValidator.engineValidate(Unknown Source)のsun.security.validator.PKIXValidator.doBuild(Unknown Source)で、要求されたターゲットへの有効な認証パスが見つかりません。 security.validator.Validator.validate(Unknown Source)at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown Source)at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source )at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)... 13 more原因:sun.security.provider.certpath.SunCertPathBuilderException:Sunで要求されたターゲットへの有効な認証パスが見つかりません.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)atjava。security.cert.CertPathBuilder.build(不明なソース)...19詳細

4

2 に答える 2

1

このリンクを読む

jre/lib/security/cacerts(デフォルトのパス)に証明書を含める必要があります

于 2013-03-22T11:32:25.710 に答える
1

これはあなたに役立つかもしれません:

http://www.java-samples.com/showtutorial.php?tutorialid=210

于 2013-03-22T11:34:31.783 に答える