我知道什么是证书链。在java中,当使用KeyStore对象时,我们可以向密钥库对象添加证书和私钥。
为此,我们这样做:
KeyStore sourceKeystore = KeyStore.getInstance("jks");
try (InputStream stream = new BufferedInputStream(Files.newInputStream(sourceKeystorePath))) {
sourceKeystore.load(stream, sourceKeystorePassword);
}
KeyStore destKeystore = KeyStore.getInstance("jks");
destKeystore.load(null, destKeystorePassword);
Enumeration<String> aliasList = sourceKeystore.aliases();
while (aliasList.hasMoreElements()) {
String alias = aliasList.nextElement();
destKeystore.setCertificateEntry(alias, sourceKeystore.getCertificate(alias));
if(sourceKeystore.isKeyEntry(alias)) {
System.out.println(alias + " : is private key");
Key key = sourceKeystore.getKey(alias, "secret".toCharArray());
Certificate[] chain = new Certificate[1];
chain[0] = sourceKeystore.getCertificate(alias);
destKeystore.setKeyEntry(alias, key, "secret".toCharArray(), chain);
}
}
try (OutputStream stream = new BufferedOutputStream(Files.newOutputStream(destKeystorePath))) {
destKeystore.store(stream, destKeystorePassword);
}
我想理解的是destKeystore.setKeyEntry()
。当我给出一个证书链作为参数时,我能给出一个这样的证书数组吗?
mainCert
第一个问题:这些设置链的不同方式意味着什么?
第二个问题:,如果我有一个JKS文件的话。如何找到证书链的确切值,以及在此KeyStore中为私钥设置证书链的顺序?基本上我的意思是,我想找出在JKS文件中传递给KeyStore.setKeyEntry()的Certificate[]参数是什么
https://stackoverflow.com/questions/56523093
复制相似问题