1

このコードを使用して、ローカルの Trac システムからタイムライン ページをダウンロードしています。

HttpURLConnection con = (HttpURLConnection) TRAC_TIMELINE_URL.openConnection();
String userpassword = TRAC_USERNAME + ":" + TRAC_PASS;
String encodedAuthorization = new String(Base64.encodeBase64(
        userpassword.getBytes(Charsets.ASCII)), Charsets.ASCII);
con.setRequestProperty("Authorization", "Basic " + encodedAuthorization);
InputStream ins = con.getInputStream();

Trac サーバーは HTTPS 経由でアクセスされますが、自己署名証明書があるため、 への呼び出しで次の例外が発生しますgetInputStream

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX パスの構築に失敗しました: sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットへの有効な証明書パスが見つかりません

それを機能させる最も速い方法は何ですか?この要求は LAN 経由で行われるため、証明書の正確性を完全に無視するだけで問題ありません。

4

1 に答える 1

0

少なくとも、Trac システムで使用されているプラ​​イベート証明書 (またはそのサーバー証明書に署名した CA の証明書) と一致するパブリック証明書がトラストストアにあることを確認する必要があります。既知の信頼ルートへの信頼のチェーンがあることは、Java SSL ライブラリの要件です (サーバー証明書の DN と要求されたホスト名の間のバインディングの検証はオプションですが、通常の HTTPS では強く推奨されます)。

于 2010-11-26T13:31:53.977 に答える