java - 识别 java keystore 中的条目

标签 java security keystore

在我的程序中,我需要使用 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);

最佳答案

调用KeyStore.isKeyEntry

请注意,唯一可能的条目是包含私钥和一个或多个证书(匹配)链的 PrivateKeyEntry,或者仅包含一个证书但绝不会超过一个的 TrustedCertEntry。 PKCS12 格式不支持 SecretKeyEntry。

实际上,由除 Java 之外的任何创建的 PKCS12 文件通常只有一个 PrivateKeyEntry 而没有其他内容,但这并不能保证。

关于java - 识别 java keystore 中的条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33564508/

相关文章:

java - 忘记 keystore 密码后如何恢复

java - 实现 Photoshop 的 "Poster edges"-filter

php - 为什么将 MySQL 凭据放在 www 目录之外?

java - ArrayList or LinkedList or TreeMap 用什么?

java - Keycloak 自定义以在身份验证流程中运行自定义 java

c# - 在没有代码签名的情况下从文件共享运行 .NET 应用程序

android - 在 Android 中存储 key

java - 如何在java中将 key 对导入到 keystore 并使 key 不可导出

java - 如何用另一个字符串数组对双数组进行排序?

java - 使用Java Stack来检测方法调用的顺序