java - BouncyCaSTLeProvider 未从 PKCS#12 文件获取私钥和​​证书链

标签 java bouncycastle private-key pkcs#12 pfx

我在 Windows 上导出了文件 cert.pfx。该文件包含我的证书。在 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);

在此操作之后,我在 pkchain 中得到 null
我还在 java.security

中注册了 BC 提供程序

最佳答案

我将 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 中是我的私钥,chain 中是证书链。
我不知道为什么在 BC 不起作用。我有其他证书并且 BC 提供商可以正常工作。

关于java - BouncyCaSTLeProvider 未从 PKCS#12 文件获取私钥和​​证书链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17486819/

相关文章:

encryption - 如何将 AES 初始化向量传达给客户端以进行混合密码系统

java - MySQL 中电话号码的最佳数据类型是什么,Java 类型映射应该是什么?

Java 加密 NoSuchAlgorithmException

android - 从字节数组生成 ECPublicKey

linux - 无法使用 openssl 获取私钥(没有起始行 :pem_lib. c:703:Expecting: ANY PRIVATE KEY)

powershell - 为 Posh-SSH New-SSHSession 提供私钥 passhprase(密码)

java - 在 Java 中从 Oracle 中提取 XMLType 值时出现异常

java - 将 Intent 调用放在单独的类中

java - 比较 JAVA 中的 NotesDateTime

android - SpongyCaSTLe 是否支持 DERObject 类?