java - 将 SSL 证书导入 Java

标签 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 文件/文件夹的管理员权限。

我该如何解决这个问题?是否有任何其他选项可以通过程序执行此操作?

最佳答案

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/

相关文章:

java - 在 Jboss AS 7.1.1 中安装 CA 证书

android - 检查 android keystore keypass 的正确性

java - 为什么一个 String 需要初始化,即使赋值会在后面发生?

apache - 使用通配符证书进行 HTTPS 重定向

facebook - 这是 facebook fb_ca_chain_bundle 的有效 ssl 证书吗

java - 证书中的主机名在 OAuth 请求中不匹配

java - hibernate - "org.hibernate.LazyInitializationException: could not initialize proxy - no Session"

java - 如何在 mysql 中为多个数据操作编写单个查询?

java - 如何确定 J2ME 中明天的日期以在 DateField 中使用?

Java TLS 客户端在访问 soap 服务时找不到证书