Java发送带有SSL的发布请求,PKIX错误

时间:2018-06-24 15:50:49

标签: java ssl x509certificate tls1.2

我是Java的所有SSL和证书管理的新手。我正在尝试调用我的合作伙伴提供的API,它是2种方式的SSL。不涉及加密,仅是伙伴知道请求源的证书。

我已经生成了我的私钥,并使用它来从CA获得有效证书,然后将CRT&PEM文件传递给我的合作伙伴以在其服务器上进行安装。

使用带有pem文件和我的私钥的curl,我可以轻松地调用它们的API。

curl -X POST -v -d '{"someparam1":"somevalue1"}' -H "Content-Type: application/json" https://api.domain.com/something --cert cn_file.pem --key cn_file.key

现在我想使用OkHttp通过Java代码调用API。我对将证书添加到我的JVM的密钥库中感到困惑。我已经使用openssl将pem转换为der并将私钥转换为p12并将它们都添加到cacerts.jks。

当我在代码中使用密钥库并传递x509信任管理器和x509密钥管理器时,代码将引发IOException,如下所示:

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

我很困惑,因为当我查看加载到代码中的密钥库时,我也可以看到der和p12文件。

0 个答案:

没有答案