2

情報を収集するために Web ページに接続しようとしています。jsoup を使用して HTML を解析しています。ただし、URL に接続してソースをダウンロードしようとすると、PKIX ビルド パスに関するエラーが表示されます。調べてみたところ、ウェブサイトの CA ルート証明書をトラストストアに追加するように言われていましたが、問題は解決しません (CA ルート証明書は既に存在していました)。Web ブラウザーを介して Web サイトに接続できますが、URL クラスを介して接続できません。これは、エラーを生成する可能性のある最も基本的なコードです。

public class URLConnectStart {
    public static void main(String[] args) {
        try {
            URL u = new URL("https://ntst.umd.edu/soc/");
            u.openStream();     
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

ここにエラーがあります

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.ssl.Alerts.getSSLException(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
    at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
    at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
    at sun.security.ssl.Handshaker.processLoop(Unknown Source)
    at sun.security.ssl.Handshaker.process_record(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at sun.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.getInputStream0(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
    at java.net.URL.openStream(Unknown Source)
    at URLConnectStart.run(URLConnectStart.java:14)
    at URLConnectStart.main(URLConnectStart.java:8)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
    at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
    at sun.security.validator.Validator.validate(Unknown Source)
    at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
    ... 16 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.provider.certpath.SunCertPathBuilder.build(Unknown Source)
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
    at java.security.cert.CertPathBuilder.build(Unknown Source)
    ... 22 more

ウェブサイトの証明書に関するクロムからの情報

ウェブサイトの証明書に関するクロムからの情報

どんな助けでも大歓迎です。これは重要なアプリケーションではないので、セキュリティはそれほど重要ではありませんが、セキュリティを維持できるのであれば、そうしたいと考えています。とにかく、私ができるようにしたいのは、この Web サイトの HTML をコードでダウンロードすることだけです。

ありがとうございました。

4

2 に答える 2

4

この Web サイトは、証明書チェーンを完了するために必要な中間証明書を提供していません。一部のユーザー エージェント/ブラウザーには、必要な中間体をダウンロードする AIA 追跡と呼ばれる機能がありますが、Java クライアントはそれらの 1 つではありません。

不完全な証明書チェーンを示す SSL Labs レポート

あなたがサイト管理者である場合、これに対処する正しい方法は、完全なチェーンが送信されるように中間証明書を提供することです。あなたがエンド ユーザーであっても、この問題を解決するために Web サイトに連絡することを検討してください。この問題により、Android ブラウザーを使用しているユーザーも、セキュリティ警告に同意しない限り、このサイトにアクセスできなくなります。

それまでの間、クライアントでこれに対処したい場合は、欠落している中間証明書をダウンロードして、Java 証明書ストアに追加できます

于 2015-10-22T19:21:41.203 に答える