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

问题描述 投票:0回答:2

我正在尝试使用来自Java客户端的HTTPS协议连接SSRS ReportServer,它给出了javax.net.ssl.SSLHandshakeException:sun.security.validator.ValidatorException:PKIX路径构建失败:java.security.cert.CertPathBuilderException:无法找到证书链但是我在Java Keystore中添加了证书,它是证书显示的密钥库,带有定义的别名。但是相同的SSRS请求调用正在使用HTTP协议。注意:我们使用Go-Daddy的通配符证书进行安全通信

java ssl https ssl-certificate ssrs-2016
2个回答
0
投票

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

密钥库文件keystore.jks包含Application Server的证书,包括其私钥

Truststore文件cacerts.jks包含Application Server的可信证书


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证书存储区。
© www.soinside.com 2019 - 2024. All rights reserved.