2012-12-13 71 views
1

PKCS12證書所以這裏就是我想要做的事:創建JAVA

  • 我連接到我的SSL服務器

  • 它送給我兩個證書,其中一個是自簽名

在這個階段,不存在任何問題,我有:

X509Certificate[] myTwoCerts; 
// with 2 certificates in there, and I'm sure it's there because, I print them in my console. 
  • 現在我想在裏面創建2個證書的.p12文件。

到現在爲止,我已經試過這樣的事情:

KeyStore pkcs12Store = KeyStore.getInstance("PKCS12"); 
pkcs12Store.load(null, null); 
X509Certificate cert1 = myTwoCerts[0]; 
X509Certificate cert2 = myTwoCerts[1] 
String alias1 = "FIRST"; 
String alias2 = "SECOND"; 
pkcs12Store.setCertificateEntry(alias1, cert2); 
pkcs12Store.setCertificateEntry(alias2, cert2); 

但我發現了以下異常:

Exception in thread "main" java.security.KeyStoreException: TrustedCertEntry not supported 

任何人可以幫助我PLZ?

回答

1

Java中的PKCS12密鑰庫不能用於存儲沒有私鑰的證書或證書鏈。

看到JCA reference guide這樣一個字條:

「PKCS12」 是另一種選擇。這是基於RSA PKCS12個人信息交換語法標準的跨平臺密鑰庫。此標準主要用於存儲或傳輸用戶的私鑰,證書和其他祕密。從JDK 6開始,在「pkcs12」中存儲可信證書的標準尚未建立,因此應將「jks」或「jceks」用於可信證書。

(儘管提JDK 6,這仍然是JDK 7文檔。)

如果你想存儲在Java中的PKCS#12存儲私鑰+證書(鏈),有需求成爲私鑰,您需要使用setKeyEntry方法。