java将pfx转换为可以导入默认密钥库的格式
我用以下代码通过编程将证书加载到默认密钥库中java将pfx转换为可以导入默认密钥库的格式,java,openssl,ssl-certificate,keystore,public-key-encryption,Java,Openssl,Ssl Certificate,Keystore,Public Key Encryption,我用以下代码通过编程将证书加载到默认密钥库中 KeyStore kStore = KeyStore.getInstance(KeyStore.getDefaultType()); java.io.FileInputStream fis = new FileInputStream(keystorePath); kStore.load(fis, new String(keystorePass).toCharArray()); fis.close(); 我有一份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格式(密钥库默认)
将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从证书创建JKS文件:
keytool -import -trustcacerts -keystore whatever.jks -storepass somepassword -noprompt -file whatever.crt -alias localhost
注意,-别名
可以是您希望用于此证书的任何唯一名称。惯例是使用您网站的URL
现在,您应该能够在代码中加载带有密钥库实例的JKS文件。也许仅仅更改Java代码以使用PKCS12实例更容易些
如果我更新为使用以下命令,它就会工作。但我不想改变
密码
KeyStore keystore = KeyStore.getInstance("PKCS12");
KeyStore KeyStore=KeyStore.getInstance(“PKCS12”);我怎么能
将pfx文件转换为用户可接受的格式
跟随
KeyStore kStore = KeyStore.getInstance(KeyStore.getDefaultType());
KeyStore kStore=KeyStore.getInstance(KeyStore.getDefaultType())
为什么不呢?Java的默认密钥库格式是JKS 但是还有其他格式,
#PKCS12
是最常用的格式
如果您需要您的应用程序更“健壮”,我建议您不要将文件转换为JKS格式
相反,您可以支持更多JKS,例如,尝试默认密钥库类型,如果失败,则尝试#PKCS12
我将进一步建议KeyStore.getInstance(KeyStore.getDefaultType())代码>被以下内容替换:
KeyStore.getInstance(UserPreferences.getDefaultType())代码>
用户选择的默认密钥库文件(可以是#PKCS12)