首页 > 解决方案 > 运行 JAVA 应用程序 - 如何在那里管理“受信任的”证书根?

问题描述

长话短说 - 我需要验证 XML 签名,其中一个步骤是验证用于签署 XML 的 PUBLIC 证书是由已知根之一颁发的。

这个问题与我的完全相同:How to check if public X509Certificate istrusted - 但答案的问题是我不想像他们那样“硬编码”任何信任存储文件和密码:

 final File file = new File("C:\\TMP\\jssecacerts");
 InputStream inStream = new FileInputStream(file);
 KeyStore keystore = KeyStore.getInstance("JKS");
 //String password = "";
 //keystore.load(inStream, password.toCharArray());
 keystore.load(inStream, null);

jre/lib/security/cacerts我希望我可以重用每个 JAVA 安装附带的默认内置文件。所以我尝试了

        KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
        ks.load(null, null);

但它是空的。

问题如下:

  1. 请确认jre/lib/security/cacerts每次运行 JAVA 程序时 JAVA 将文件加载到内存中。我很难相信它没有 - 否则所有 HTTPS 通信将如何工作?
  2. 如何使用此文件验证证书?或者为了简化 - 我如何才能访问受信任的证书 KeyStore 以便我可以应用验证逻辑?

标签: javacertificatekeystoretruststore

解决方案


推荐阅读