标识java密钥库中的条目

时间:2015-11-06 10:20:11

标签: java security keystore

在我的程序中,我需要使用java从pkcs12存档中包含的密钥对中获取密钥。由于我不知道密钥对别名,我必须遍历密钥库中的所有别名。 问题是,我如何识别密钥对? 我使用此代码获取密钥和证书链:

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);

我想将条目标识为密钥对或仅标识证书/链

Entry entry = kspkcs12.getEntry(alias, null);

1 个答案:

答案 0 :(得分:1)

致电KeyStore.isKeyEntry

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

实际上,除了Java 以外的任何创建的PKCS12文件通常只有一个PrivateKeyEntry而没有别的,但是不能保证。