我正在尝试从调用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文件/文件夹的管理员权限。
我该如何解决这个问题?还有其他方法可以通过程序来完成吗?
答案 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证书。