这个问题在这里已经有答案了:
“pkix路径生成失败”和“找不到请求目标的有效证书路径”(39个答案)
解析javax.net.ssl.sslhandshakeexception:sun.security.validator.validatorexception:pkix路径生成失败错误(26个答案)
26天前关门了。
我有个问题。我经常遇到ssl异常。我确实配置了这些东西:
已将证书文件添加到java cacerts中
已经在我的spring boot项目中添加了ssl配置
但当我试图从spring启动项目调用外部api时,遇到了ssl异常。
原因:javax.net.ssl.sslhandshakeexception:pkix路径生成失败:sun.security.provider.certpath.suncertpathbuilderexception:找不到请求目标的有效证书路径apr 02 10:04:44 java[13294]:at sun.security.ssl.alert.createsslexception(alert)。java:131)4月2日10:04:44 java [13294]:在sun.security.ssl.transportcontext.fatal(transportcontext。java:324)4月2日10:04:44 java[13294]:在sun.security.ssl.transportcontext.fatal(transportcontext)。java:267)4月2日10:04:44 java[13294]:在sun.security.ssl.transportcontext.fatal(transportcontext)。java:262)4月2日10:04:44 java [13294]:在sun.security.ssl.certificatemessage$t12certificateconsumer.checkservercerts(证书消息。java:654)4月2日10:04:44 java[13294]:在sun.security.ssl.certificatemessage$t12certificateconsumer.oncertificate(certificatemessage。java:473)4月2日10:04:44 java [13294]:在sun.security.ssl.certificatemessage$t12certificateconsumer.consume(证书消息。java:369)4月2日10:04:44 java[13294]:在sun.security.ssl.sslhandshake.consume(sslhandshake。java:377)4月2日10:04:44 java[13294]:在sun.security.ssl.handshakecontext.dispatch(handshakecontext。java:444)4月2日10:04:44 java [13294]:在sun.security.ssl.handshakecontext.dispatch(handshakecontext。java:422)4月2日10:04:44 java[13294]:在sun.security.ssl.transportcontext.dispatch(transportcontext。java:182)4月2日10:04:44 java[13294]:在sun.security.ssl.ssltransport.decode(ssltransport。java:149)4月2日10:04:44 java [13294]:在sun.security.ssl.sslsocketimpl.decode(sslsocketimpl。java:1143)4月2日10:04:44 java[13294]:在sun.security.ssl.sslsocketimpl.readhandshakerecord(sslsocketimpl。java:1054)4月2日10:04:44 java[13294]:在sun.security.ssl.sslsocketimpl.starthandshake(sslsocketimpl。java:394)4月2日10:04:44 java [13294]:在太阳网。www.protocol.https.httpsclient.afterconnect(httpsclient。java:559)4月2日10:04:44 java[13294]:在sun.net上。www.protocol.https.abstractdelegatehttpsurlconnection.connect(abstractdelegatehttpsurlconnection。java:185)4月2日10:04:44 java[13294]:在sun.net上。www.protocol.http.httpurlconnection.getoutputstream0(httpurlconnection。java:1340)4月2日10:04:44 java[13294]:在sun.net上。www.protocol.http.httpurlconnection.getoutputstream(httpurlconnection。java:1315)4月2日10:04:44 java[13294]:在sun.net上。www.protocol.https.httpsurlconnectionimpl.getoutputstream(httpsurlconnectionimpl。java:264)4月2日10:04:44 java [13294]:在com.sun.xml.internal.ws.transport.http.client.httpclienttransport.getoutput(httpclienttransport)。java:104)4月2日10:04:44 dbx高丽 java [13294]:。。。124更多apr 02 10:04:44 java[13294]:原因:sun.security.validator.validatorexception:pkix路径生成失败:sun.security.provider.certpath.suncertpathbuilderexception:找不到请求目标的有效证书路径apr 02 10:04:44 java[13294]:位于sun.security.validator.pkixvalidator.dobuild(pkixvalidator)。java:456)4月2日10:04:44 java[13294]:在sun.security.validator.pkixvalidator.enginevalidate(pkixvalidator。java:323)4月2日10:04:44 java[13294]:在sun.security.validator.validator.validator(validator。java:271)4月2日10:04:44 java[13294]:在sun.security.ssl.x509trustmanagerimpl.validate(x509trustmanagerimpl。java:315)4月2日10:04:44 java [13294]:在sun.security.ssl.x509trustmanagerimpl.checktrusted(x509trustmanagerimpl。java:223)4月2日10:04:44 java[13294]:在sun.security.ssl.x509trustmanagerimpl.checkservertrusted(x509trustmanagerimpl。java:129)4月2日10:04:44 java[13294]:在sun.security.ssl.certificatemessage$t12certificateconsumer.checkservercerts(certificatemessage。java:638)4月2日10:04:44 java [13294]:。。。140更多apr 02 10:04:44 java[13294]:原因:sun.security.provider.certpath.suncertpathbuilderexception:找不到请求目标的有效证书路径apr 02 10:04:44 java[13294]:位于sun.security.provider.certpath.suncertpathbuilder.build(suncertpathbuilder)。java:141)4月2日10:04:44 java [13294]:在sun.security.provider.certpath.suncertpathbuilder.enginebuild(suncertpathbuilder)。java:126)4月2日10:04:44 java[13294]:在java.security.cert.certpathbuilder.build(certpathbuilder。java:280)4月2日10:04:44 java[13294]:在sun.security.validator.pkixvalidator.dobuild(pkixvalidator。java:451)
我的java配置如下所示:
SSLContext sslContext = SSLContext.getInstance("SSL");
// set up a TrustManager that trusts everything
sslContext.init(null, new TrustManager[] { new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
System.out.println("getAcceptedIssuers =============");
return null;
}
public void checkClientTrusted(X509Certificate[] certs,
String authType) {
System.out.println("checkClientTrusted =============");
}
public void checkServerTrusted(X509Certificate[] certs,
String authType) {
System.out.println("checkServerTrusted =============");
}
} }, new SecureRandom());
SSLSocketFactory sf = new SSLSocketFactory(sslContext);
Scheme httpsScheme = new Scheme("https", 443, sf);
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(httpsScheme);
暂无答案!
目前还没有任何答案,快来回答吧!