我使用以下代码以编程方式将证书加载到默认密钥库中
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实例更容易?