2013-07-05 104 views
0

我在Windows上導出文件cert.pfx。該文件包含我的證書。在Ubuntu上,我可以用密碼打開它,然後看到證書。但是,當我加載該文件:BouncyCastleProvider沒有從PKCS#12文件獲取私鑰和​​證書鏈

BouncyCastleProvider provider = new BouncyCastleProvider(); 
Security.addProvider(provider); 
KeyStore ks = ks = KeyStore.getInstance("pkcs12", provider.getName()); 
ks.load(new FileInputStream("/home/test/.cert.pfx", "xxxxxx".toCharArray()); 
String alias = ks.aliases().nextElement(); 
PrivateKey pk = (PrivateKey) ks.getKey(alias, pts.getRandom()); 
Certificate[] chain = ks.getCertificateChain(alias); 

此操作後,我有nullpkchain
我還註冊了BC供應商java.security

回答

1

我將BouncyCastleProvider更改爲SunJSSE。現在我正確的代碼是:

String providerName = "SunJSSE"; 
KeyStore ks = ks = KeyStore.getInstance("pkcs12", providerName); 
ks.load(new FileInputStream("/home/test/.cert.pfx", "xxxxxx".toCharArray()); 
String alias = ks.aliases().nextElement(); 
PrivateKey pk = (PrivateKey) ks.getKey(alias, pts.getRandom()); 
Certificate[] chain = ks.getCertificateChain(alias); 

現在pk是我privarte鍵,在chain是證書鏈。
我不知道爲什麼在BC不起作用。我有其他證書和BC提供程序正常工作。

相關問題