我正在尝试从调用 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 文件/文件夹的管理员权限。
我该如何解决这个问题?是否有任何其他选项可以通过程序执行此操作?
最佳答案
PFX 文件不是证书(假设您正确使用了通常的扩展名),它们是 PKCS#12 存储,包含两个证书和一个私钥。
keytool
可以将此类文件视为 PKCS12
keystore ,因此您可以使用以下方式导出您的证书(没有私钥):
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 证书导入您的信任库。
关于java - 将 SSL 证书导入 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23757971/