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

PKIX路径构建错误:不确定我是否正确创建密钥库

吕鹏
2023-03-14

我发现以下错误:

_recordSSLHandshakeException:sun.security.ssl.ValidatorException: PKIX路径构建失败:mpl.performSunCertPathBuilderException:无法在sun.security.ssl.找到请求目标的有效认证路径mpl.startSSLException(未知来源)在sun.security.ssl.SSLSocketImpl.start(未知来源)在sun.net.www.protocol.https.Hlient.afterSE(未知来源)在sun.net.www.protocol.https.Honnection.connectSE(未知来源)在sun.net.www.protocol.http.ClientHonnection.get证书(未知来源)在sun.security.ssl.ClientHandshaker.process消息(未知来源)在sun.security.ssl.Handshaker.process循环(未知来源)在sun.security.ssl.Handshaker.process(未知来源)在sun.security.ssl.SSLSocketIjavax.net.ssl.记录(未知来源)在sun.security.validator.SSLSocketIsun.security.provider.certpath.首字母握手(未知来源)在sun.security.ssl.SSLSocketIlerts.get握手(未知来源)在sun.security.ssl.SSLSocketImpl.fatal握手(未知来源)在sun.security.ssl.HttpsCandshaker.fatal连接(未知来源)在sun.security.ssl.AbstractHttpsURLCandshaker.fatal(未知来源)在sun.security.ssl.HttpURLCandshaker.serverInputStream(未知来源)在sun.ValidatorException:PKIX路径构建失败:sun. security. Provider. certpath。SunCertPathBuilderException:无法在sun. security. validator找到请求目标的有效认证路径。在sun. security. validator的PKIXValidator. doBuild(未知源)。在sun. security. validator的PKIXValidator.工程验证(未知源)。在sun. security. ssl的Validator. validator(未知源)。在sun. security. ssl的X509TrustManagerInpl. valate(未知源)。在sun. security. ssl的X509TrustManagerInpl. check Trusted(未知源)。X509TrustManagerInpl. check ServerTrusted(未知源)...17更多由:sun. security. Provider. certpath引起。SunCertPathBuilderException:无法在sun. security找到请求目标的有效认证路径。

我做了以下工作:

  • 我更新到JRE8觉得CA可能老了
  • 将JRE8更改为我在eclipse中的构建路径。我第一次这样做时,它解决了我的问题,并且我能够发出HTTP请求,直到我关闭eclipse。之后再次出现相同的错误。
  • 通过google chrome下载了他们的root cert,并尝试通过执行以下命令将其添加到keystore(使用windows,在管理模式下运行cmd.exe)
  • 我还尝试在管理模式下运行Eclipse

当我获得我向其发出请求的网站安全性的详细信息时,会出现3个证书。rootca、中间和第三个。我是否需要所有这些证书来创建有效的密钥库?如果是,我该怎么做。我使用下面的代码为rootca创建密钥库,但这并没有解决我的问题。

.\keytool -import -trustcacerts -keystore cacerts -storepass changeit -noprompt -alias alex -file C:\Users\Alex.cauthen\Documents\CA1.cer

编辑:此外,我正在调用此服务器的API,这意味着我调用一个方法,它会为我发出请求。我联系了他们的支持团队,他们说没有人遇到这个问题。我不知道这些信息是否有帮助。

javax.net.debug=不成功时的ssl输出:

%%无效:[Session-1,TLS_RSA_WITH_AES_128_CBC_SHA]main,发送TLSv1警报:致命,描述=证书\u未知main,写入:TLSv1警报,长度=2 main,称为closeSocket()

随机成功时的输出:

***完成验证数据:{0,221,45,195,129,216,158,173,83,221,170,52}

%%缓存的客户端会话:[session-1,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256]main,WRITE:TLSv1。2应用程序数据,长度=264 main,读取:TLSv1。2应用数据,长度=241

共有2个答案

丁雅逸
2023-03-14

所以我犯了一个愚蠢的错误。我没有在命令行中指定cacerts的正确路径,因此它在当前目录而不是安全文件夹中创建了一个文件夹cacerts。

胡向阳
2023-03-14

您只需要导入根CA证书,并且您使用的命令行是正确的。所以你肯定不是真的在用这个文件作为信任库。您需要设置javax。网ssl。信任将属性存储到其位置,或使用已加载的TrustManager初始化一个SSLContext,然后从那里继续。

 类似资料:
  • 所以这就是我试过的。有更好的方法吗?

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

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

  • 编辑:这个问题的第一个版本给人的印象是我的问题与Maven有关。我修改了措辞,以便更多地关注JDK。 我得到时,试图使用Java联系任何支持SSL的服务。对其他相关问题的回答并没有阻止我的错误。 null 众所周知的解决这个问题的方法似乎不起作用。我如何才能停止错误,修复我的JDK,并最终再次使用支持SSL的服务?

  • 问题内容: 我正在与一个名为CommWeb的商户帐户集成,并向其URL(https://migs.mastercard.com.au/vpcdps)发送一个SSL帖子。当我尝试发送帖子时,出现以下异常: 执行该帖子的代码(我没有写过,并且已经存在于我们的代码库中)是: 商户帐户集成的文档对证书一无所知。他们确实提供了一些似乎盲目接受证书的示例JSP代码: 我们的Web应用程序有一个密钥库,我尝试使

  • 问题内容: 我阅读了以下具有相关性的问题,但答复并未使我满意:MySQL:#126-表的密钥文件不正确 问题 运行查询时出现此错误 错误126(HY000):表的密钥文件不正确` 问题 当我试图找到问题时,我找不到问题,所以我不知道如何使用repair命令修复它。在我已经尝试过之后,是否有其他任何方法可以指示我如何找到导致此问题的问题呢? 查询 mysqlcheck 计算行 更新资料 磁盘使用情况