当前位置: 首页 > 知识库问答 >
问题:

SSLHandShakeException:PKIX路径构建失败

东方淇
2023-03-14

我已经研究了可能的原因,并按照以下步骤创建了一个包含外部应用程序证书的truststore:

  • 从浏览器下载证书链
  • 使用
  • 创建truststore

keytool-import-v-trustcacerts-alias mycert-file x_my_cert_location_x-keystore truststore

    null
<Connector port="${catalina.port.https}" server="Apache" protocol="HTTP/1.1"
           SSLEnabled="true" scheme="https" secure="true" sslProtocol="TLS"
           clientAuth="false"
           connectionTimeout="20000"
           compression="on"
           compressionMinSize="200"
           compressableMimeType="text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json,application/xml"
           enableLookups="false"
           URIEncoding="UTF-8"
           keystoreFile="my_store_location" keystorePass="myPwd"/>

在SSL调试中,我可以看到:

> %% Invalidated: [Session-15, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]
> http-nio-8080-exec-9, SEND TLSv1.2 ALERT: fatal, description =
> certificate_unknown http-nio-8080-exec-9, WRITE: TLSv1.2 Alert, length
> = 2 [Raw write]: length = 7 0000: 15 03 03 00 02 02 2E ....... http-nio-8080-exec-9, called closeSocket() http-nio-8080-exec-9,
> handling exception: 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

对我来说毫无意义。我的应用程序在Java1.8.242上。对此有什么建议吗?

共有1个答案

孟宏才
2023-03-14

该错误表示您缺少试图访问的站点的证书。所以..

>

  • 使用-djavax.net.debug=all启动Java/Tomcat。在日志中,您应该看到这样的行(我删除了时间戳等):

     trustStore is: {your-cacerts-file} trustStore
     type is: pkcs12
     trustStore provider is: the last modified time is: Tue Feb 02 18:29:33 GMT 2021 
     Reload the trust store
     Reload trust
     Reloaded {x} trust certs adding as trusted certificates
     ( {then you get a big dump of all {x} certs.}
    

    这样,您就可以确定您的cacerts是否真的被阅读。

  •  类似资料:
    • 连接Ex:javax.net.ssl.sslHandShakeException:Sun.Security.Validator.ValidatoreXception:PKIX路径构建失败:Sun.Security.Provider.CertPath.SunCertPathBuilderException:找不到请求目标的有效证书路径 代码:

    • 我使用以下命令创建了CSR请求: openssl请求-out CertificateCsr.csr-new-newkey rsa:2048-keyout CertificateKey.key 之后,CA将与我共享证书(.cer)文件。 在此之后,我使用key将.cer文件转换为.p12。 使用CA发送的cer和私钥创建.p12证书 C:\Java\jdk1.6.0_38\jre\bin>opens

    • Sun.Security.Validator.ValidatorException:PKIX路径生成失败:Sun.Security.Provider.CertPath.SunCertPathBuilderException:找不到请求目标的有效证书路径;嵌套异常为javax.net.ssl.sslHandShakeException:Sun.Security.Validator.Validator

    • 我刚刚为我们的域名购买了一个新的通配符ssl证书,因为我们的旧证书即将到期。我已经将它安装在我们的cas服务器和应用服务器上,但是我在我们的应用服务器上得到以下堆栈跟踪: 两个服务器上的证书是相同的。

    • 问题内容: 我收到此错误: 我正在使用Tomcat 6作为Web服务器。我有两个HTTPS Web应用程序安装在不同端口上但在同一台机器上的不同Tomcat上。说App1(port 8443)和 App2(port 443)。App1连接到App2。当App1连接到App2我得到以上错误。我知道这是一个非常常见的错误,因此在不同的论坛和站点上遇到了许多解决方案。我在server.xml两个Tomc

    • 我正在使用一个自定义的工件库来部署我的项目。当我在本地机器上工作时,这很好,但我已经启用了Gitlab的AutoDevOps功能,并将我的项目与Kubernetes集群集成。 kubernetes集群由rancher管理。 问题是在Gitlab上运行的构建失败并出现以下错误: 插件org.apache.maven。插件:maven resources插件:2.6或其一个依赖项无法解析:无法读取or