我希望能够在 Java 应用程序中以编程方式访问所有受信任的根证书。
我正在查看密钥库接口,但我希望获得 JRE 隐含的受信任根列表。
这在任何地方都可以访问吗?
原文由 Shawn D. 发布,翻译遵循 CC BY-SA 4.0 许可协议
我希望能够在 Java 应用程序中以编程方式访问所有受信任的根证书。
我正在查看密钥库接口,但我希望获得 JRE 隐含的受信任根列表。
这在任何地方都可以访问吗?
原文由 Shawn D. 发布,翻译遵循 CC BY-SA 4.0 许可协议
这应该更灵活地使用系统中的默认信任库来获取所有证书:
TrustManagerFactory trustManagerFactory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
List<Certificate> x509Certificates = new ArrayList<>();
trustManagerFactory.init((KeyStore)null);
Arrays.asList(trustManagerFactory.getTrustManagers()).stream().forEach(t -> {
x509Certificates.addAll(Arrays.asList(((X509TrustManager)t).getAcceptedIssuers()));
});
```
原文由 ko 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
有一个示例展示了如何获取一组根证书并遍历它们,称为 Listing the Most-Trusted Certificate Authorities (CA) in a Key Store 。这是打印出每个证书的稍微修改的版本(在 Windows Vista 上测试)。