我的Java程序使用GitHub的原始地址访问版本文件以获取最新版本。这个地址的格式为https://raw.github.com/user/repository/branch/version_file使用未经验证的SSL证书通过HTTPS下载文件
在测试阶段,我用这个用下面的代码没有问题:
currentVersion = new Version(plugin.getDescription().getVersion());
URL url = new URL("https://raw.github.com/zonedabone/CommandSigns/master/VERSION");
URLConnection connection = url.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
newestVersion = new Version(in.readLine());
if (currentVersion.compareTo(newestVersion) < 0)
newAvailable = true;
然而,一些用户抱怨以下错误:
sun.security.validator.ValidatorException:
PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
Java正在抱怨它无法验证SSL证书。 GitHub的证书由DigiCert验证,但显然一些Java版本不会识别这一点。
我读过有两种方法可以解决这个问题:将证书添加到TrustStore并完全禁用验证。
答案建议在计算器上或者使用的允许,所有信任库,这将是考虑到它是不是一个“测试环境”,或者如果他们展示如何添加证书,他们通常的范围内一个非常糟糕的主意链接到一个破碎的网页。
有人可以提供新的信息吗?
此问题已在SO和网上进行了无数次的提问和回答。请在“java自签名证书”上进行Google搜索并删除此问题。 –
[我如何使用Java HttpsURLConnection接受自签名证书?](http://stackoverflow.com/questions/859111/how-do-i-accept-a-self-signed-certificate-with -a-java-httpsurlconnection) –
@JimGarrison,真的,不幸的是,谷歌搜索将导致一些答案,建议使用信任管理器,信任任何证书... – Bruno