2015-11-06 80 views
0

在我的程序中,我需要使用java從包含在pkcs12存檔中的密鑰對中獲取密鑰。由於我不知道密鑰對別名,我必須遍歷密鑰庫中的所有別名。 問題是,我如何識別密鑰對? 我使用這個代碼來獲得密鑰和證書鏈:識別java密鑰庫中的條目

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

呼叫KeyStore.isKeyEntry

注意只有可能的Entry是一個PrivateKeyEntry,它包含一個或多個cert的私鑰和(匹配)鏈,或者一個TrustedCertEntry只包含一個證書但不能包含多個證書。 PKCS12格式不支持SecretKeyEntry。

實際上,除了Java之外的任何東西創建的PKCS12文件通常只有一個PrivateKeyEntry,沒有別的,但沒有保證。