由于错误而使用Java API错误创建pkcs12:java.security.KeyStoreException:不支持TrustedCertEntry

我正在尝试使用 Java API创建PKCS12密钥库文件.但是,一旦我尝试导入证书,我就会得到异常

java.security.KeyStoreException: TrustedCertEntry not supported

我的代码是:

Provider p = Security.getProvider(BouncyCastleProvider.PROVIDER_NAME);
...
KeyStore keyStore = KeyStore.getInstance("PKCS12");
keyStore.load(null, keystorePass);

keyStore.setCertificateEntry("certificate", certificate);

keyStore.setKeyEntry("key",privateKey, keypass, certChain);

相同的方法适用于创建JKS文件但对于PKCS12文件失败.

注意:
作为输入提供给该程序的证书由服务器使用使用此处使用的相同私钥生成的CSR创建.即给定证书的公共模数,用于生成它的CSR和给定的私钥是相同的.

服务器证书存储在变量certChain中.

注意:
我已经尝试过OpenSSL来创建pkcs12并且我很成功,但是我需要使用Java API来做同样的事情.

注意:我使用的是JDK 7

Java 7(及更早版本)不允许在PKCS12密钥库中使用trustedCert条目,尽管8可能,因为PKCS12是设计的,通常仅用于私钥和相关证书以及Java在privateKey中放在一起条目.您说此证书是/匹配私钥的证书,因此它必须首先出现在“密钥”条目中的certChain中,并且您不需要“cert”条目.
相关文章
相关标签/搜索