在我的程序中,我需要使用 java 从 pkcs12 存档中包含的 key 对中获取 key 。由于我不知道 key 对别名,因此我必须迭代 keystore 中的所有别名。 问题是,如何识别 key 对? 我使用此代码来获取 key 和证书链:
KeyStore ks = KeyStore.getInstance("pkcs12");
ks.load(new FileInputStream(new File(p12Path)), p12Password);
Enumeration aliases = ks.aliases();
String alias = (String) aliases.nextElement();
p12Key = ks.getKey(alias, p12Password);
p12Chain = ks.getCertificateChain(alias);
我想将条目标识为 key 对或只是证书/链
Entry entry = kspkcs12.getEntry(alias, null);
最佳答案
请注意,唯一可能的条目是包含私钥和一个或多个证书(匹配)链的 PrivateKeyEntry,或者仅包含一个证书但绝不会超过一个的 TrustedCertEntry。 PKCS12 格式不支持 SecretKeyEntry。
实际上,由除 Java 之外的任何创建的 PKCS12 文件通常只有一个 PrivateKeyEntry 而没有其他内容,但这并不能保证。
关于java - 识别 java keystore 中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33564508/