Знам какво е верига от сертификати. В Java, когато работим с KeyStore обекти, можем да добавяме сертификати и частни ключове към обект на 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()
. Когато дам верига от сертификати като параметър в това, мога ли да дам масив от сертификати като този?
- [rootCert, interCert, mainCert]
- [mainCert, interCert, rootCert]
- [mainCert]
Първи въпрос: какво означават тези различни начини за настройка на веригата?
Втори въпрос: Също така, ако имам JKS файл. Как да намеря тази точна стойност на веригата от сертификати и в какъв ред е зададена веригата от сертификати за частен ключ в това KeyStore? основно това, което имам предвид е, че искам да разбера какъв беше параметърът Certificate[], предаден на KeyStore.setKeyEntry() в този JKS файл