在我的程序中,我需要使用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);
答案 0 :(得分:1)
请注意,唯一可能的条目是包含一个或多个证书的私钥和(匹配)链的PrivateKeyEntry,或者只包含一个证书但从不多于一个证书的TrustedCertEntry。 PKCS12格式不支持SecretKeyEntry。
实际上,除了Java 以外的任何创建的PKCS12文件通常只有一个PrivateKeyEntry而没有别的,但是不能保证。