0

cert.pfx在 Windows 上导出了文件。该文件包含我的证书。在 Ubuntu 上,我可以用密码打开它,我会看到证书。但是当我加载这个文件时:

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

4

1 回答 1

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);

现在 inpk是我的私钥, inchain是证书链。
我不知道为什么在 BC 不起作用。我有其他证书和 BC 提供程序正常工作。

于 2013-07-05T10:34:48.577 回答