SSLHandshakeException:PKIX路径构建失败,无法找到证书链

时间:2019-03-18 12:37:41

标签: java ssl https ssl-certificate ssrs-2016

我正在尝试通过Java Client从HTTPS协议连接SSRS ReportServer和HTTPS协议,从而提供 javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:java.security.cert.CertPathBuilderException:找不到证书链 但是我已经在Java密钥库中添加了证书,它以定义的别名显示了证书的密钥库。 但是Same SSSS Request调用正在使用HTTP协议。 注意:我们正在使用Go-Daddy的通配符证书进行安全通信

2 个答案:

答案 0 :(得分:0)

获得证书后,证书中应该包含一个p7b(可能)。

本质上,当GoDaddy颁发证书时,它们不是直接从根颁发的。

您很有可能是由中间机构发行的。

您可以在https://ssl-ccp.godaddy.com/repository?origin=CALLISTO

获得中间证书

证书链需要附加到实际证书中,并导入到 服务器

包含要导入的证书的PEM文件应如下所示:

<actual certificate>
<intermediate certificate>
[<intermediate certificate> ...]

之后,您无需在客户端上执行任何其他操作。

编辑

重新阅读我的答案后,我意识到该过程可能有些含糊。因此,在努力使这个更完整的周期到这里的过程中。

  1. 生成密钥对/自签名证书,例如PKCS#12容器。
  2. 创建PKCS#10证书签名请求,以将上述证书发送给GoDaddy。
  3. GoDaddy返回签名的X.509证书(通常带有有关如何安装它的说明)。
  4. 获取证书(假设为PEM格式),并连接https://ssl-ccp.godaddy.com/repository?origin=CALLISTO中的颁发链,然后将其从步骤1导入回到PKCS#12中。
  5. 将PKCS#12分配为SSRS服务器上的TLS证书存储。

答案 1 :(得分:0)

您是否可以验证证书已添加到“ Java Truststore”而不是Keystore中(尽管两者都具有.jks扩展名)。 看看这个https://docs.oracle.com/cd/E19830-01/819-4712/ablqw/index.html

  

密钥库文件keystore.jks包含应用服务器的证书,包括其私钥

     

Truststore文件cacerts.jks,包含Application Server的受信任证书