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 回答