我的 Java 程序使用 GitHub 的原始地址来访问版本文件以获取最新版本。此地址的格式为https://raw.github.com/user/repository/branch/version_file
在测试阶段,我使用以下代码没有问题:
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 并完全禁用验证。
StackOverflow 上建议的答案要么使用允许所有的 TrustStore,考虑到它不在“测试环境”的范围内,这将是一个非常糟糕的主意,或者如果它们显示如何添加证书,它们通常链接到一个损坏的网页。
有人可以提供新信息吗?