【发布时间】:2016-03-09 09:45:24
【问题描述】:
我正在尝试连接到需要 PKCS12 证书的 SSL 网络服务。
问题:是否可以不将证书安装到本地密钥库,而是在运行时动态加载?
我尝试如下:
static {
KeyStore.getInstance("PKCS12").load(this.getClass().getClassLoader()
.getResourceAsStream("myfile.p12"), "password".toCharArray());
}
但是结果:
sun.security.validator.ValidatorException:PKIX 路径构建失败。 sun.security.provider.certpath.SunCertPathBuilderException:无法 找到请求目标的有效认证路径。
所以显然它不起作用。但是为什么呢?
旁注:链接的 SO 问题没有回答我的问题,因为它针对 trustStore,但我的问题是关于 keystore。
【问题讨论】:
-
它需要在 CERTSTORE 中,因为这是 java 用来验证证书的(密钥库是不同的)。您可能能够以不同的方式执行此操作,但您必须编写大量复杂的代码 - 检查其他问题以了解如何动态地将证书添加到 certstore:Adding certificate to keystore using java code
-
@Augusto 但没有
TrustManagerFactory.getInstance("PKCS12");。
标签: java web-services ssl