Windows版OpenJDK中包含的root-CA证书列表令人印象深刻,但是有很多根CA证书被Firefox等常见浏览器信任,而Java却不信任。
Microsoft和Mozilla都发布了他们当前的根CA证书列表,但使用的文件格式似乎是专有的。
curl 项目有一个使用 Mozilla 文件作为源代码的自动转换器,但是这个转换器 (mk-ca-bundle( 是一个 Perl 脚本。
有没有办法用普通的Java读取这些列表之一,以便以后可以将其用作信任存储?
OpenJDK 描述了他们如何在 OpenJDK 存储库的安全文件中构建cacerts
文件。该脚本从 Mozilla 下载证书:
wget https://hg.mozilla.org/mozilla-central/raw-file/tip/security/nss/lib/ckfw/builtins/certdata.txt .
根据存储库说明,您可以构建自己的cacerts
文件,该文件将信任您选择的另一个证书列表:
下载以下 Perl 脚本:https://raw.githubusercontent.com/curl/curl/master/lib/mk-ca-bundle.pl
下载以下 Java 应用程序:https://github.com/use-sparingly/keyutil/releases/download/0.4.0/keyutil-0.4.0.jar(源代码可在 https://github.com/use-sparingly/keyutil 获得(
使用以下命令运行提供的
GenerateCertsFile.sh
脚本:bash./GenerateCertsFile.sh
- 这将使用上述文件,假设它们与脚本位于同一目录中使用提供的证书:它必须在
jdk/jre/lib/security
或jdk/lib/securityfolder