将SSL证书导入Java

时间:2014-05-20 11:00:08

标签: java ssl keytool

我正在尝试从调用Web服务的JAR库调用方法。当我调用所需的方法时,我收到以下错误。

sun.security.validator.ValidatorException: PKIX path building failed: 
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.

我有一个有效的SSL证书文件(ssl_file.pfx)和密码。当我谷歌时,所有结果都要求使用Keytool将证书添加到cacert。

当我尝试以下命令时,我得到"输入不是X.509证书"消息。

keytool -import -file ssl_file.pfx -alias somealias -keystore keystore_file -storepass changeit

注意:我没有JRE / lib / security / cacerts文件/文件夹的管理员权限。

我该如何解决这个问题?还有其他方法可以通过程序来完成吗?

1 个答案:

答案 0 :(得分:2)

PFX文件不是证书(假设您正确使用了通常的扩展名),它们是PKCS#12商店,包含两个证书的私钥。

keytool可以将此类文件视为PKCS12个密钥库,因此您可以使用以下方式导出证书(不使用其私钥):

keytool -exportcert -file cert.crt -keystore ssl_file.pfx -storetype PKCS12 -alias ...

(如果您不知道现有的别名,请先使用-list代替-exportcert。)

然后,导入该证书:

keytool -importcert -file cert.crt -alias somealias -keystore keystore_file ...

这就是说,除非它是自签名证书,否则通常不应该执行任何操作,而是在信任库中导入CA证书。