java将pfx转换为可导入默认密钥库的格式

我使用以下代码以编程方式将证书加载到默认密钥库中

KeyStore kStore = KeyStore.getInstance(KeyStore.getDefaultType());
java.io.FileInputStream fis = new FileInputStream(keystorePath);
kStore.load(fis, new String(keystorePass).toCharArray());
fis.close();

我有来自第三方的pfx格式的证书.如果我尝试加载它,它会因格式无效而失败.

如果我更新使用以下它可以工作.但我不想改变代码.

KeyStore keystore = KeyStore.getInstance("PKCS12");  

我怎么能把pfx文件转换为下面的格式

KeyStore kStore = KeyStore.getInstance(KeyStore.getDefaultType());    

最佳答案 证书的东西从来都不简单.您需要openssl(Cygwin版本适用于Windows)将pfx / p12文件转换为pem文件,然后您可以从pem创建证书.最后,您可以使用Java keytool程序将证书转换为JKS格式(KeyStore默认值).

将pfx转换为pem:

openssl pkcs12 -in whatever.pfx -out whatever.pem -clcerts -nokeys

从pem文件创建X509证书:

openssl x509 -in whatever.pem -inform PEM -out whatever.crt -outform DER

使用Java的keytool从cert创建JKS文件:

keytool -import -trustcacerts -keystore whatever.jks -storepass somepassword -noprompt -file whatever.crt -alias localhost

请注意,-alias可以是您要用于此证书的任何唯一名称.惯例是使用您的网站的URL.

现在,您应该能够在代码中使用KeyStore实例加载JKS文件.也许更改Java代码以使用PKCS12实例更容易?

点赞