2013-07-05 146 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提供程序正常工作。

相关问题