将证书导入密钥库

时间:2014-02-11 03:54:35

标签: java certificate keystore

我使用以下代码通过使用URL类的URL链接来提取证书:

URL url = new URL("https://www.google.com/");
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.connect();

我的问题是:我想将证书直接导入到Java KeyStore中,以便我可以将其用于验证。我发现以下代码是完美的,但它需要已经下载证书:(有人可以帮我修改它。换句话说,将我以前的代码用于以下方法:

KeyStore trustStore  = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(null); //Make an empty store
InputStream fis = /* insert your file path here */; 
BufferedInputStream bis = new BufferedInputStream(fis);

CertificateFactory cf = CertificateFactory.getInstance("X.509");

while (bis.available() > 0) {
    Certificate cert = cf.generateCertificate(bis);
    trustStore.setCertificateEntry("fiddler"+bis.available(), cert);
}

1 个答案:

答案 0 :(得分:0)

  

我想将证书直接导入到Java KeyStore中,以便我可以将其用于验证

通常,您使用自定义X509TrustManager并覆盖checkServerTrusted。在checkServerTrusted中,您可以执行诸如验证链完全回到您的受信任根目录,或者固定服务器的公钥。

通过在应用程序中构建逻辑,可以避免与密钥库交互相关的问题(例如用户删除所需的证书);以及与CA /浏览器(CA / B)模型相关的风险(包括数百个根和下属并信任它们)。

有人说“信任”是指您没有任何安全控制权时所使用的内容。在这种情况下,自定义X509TrustManager是所需的控件,并且不需要像CA / B模型那样信任其他人。