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

“PKIX路径构建失败”和“找不到请求目标的有效认证路径”

淳于博文
2023-03-14

我试图为我的java项目使用twitter4j库获取tweets,该项目使用java.net.httpurlConnection(如堆栈跟踪中所示)。第一次运行时,我在证书sun.security.validator.validatoreXceptionsun.security.provider.certPath.SunCertPathBuilderException时出错。然后我通过以下方式添加了twitter证书:

C:\Program Files\Java\jdk1.7.0_45\jre\lib\security>keytool -importcert -trustcacerts -file PathToCert -alias ca_alias -keystore "C:\Program Files\Java\jdk1.7.0_45\jre\lib\security\cacerts"

但没有成功。以下是获取推文的程序:

public static void main(String[] args) throws TwitterException {
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
        .setOAuthConsumerKey("myConsumerKey")
        .setOAuthConsumerSecret("myConsumerSecret")
        .setOAuthAccessToken("myAccessToken")
        .setOAuthAccessTokenSecret("myAccessTokenSecret");
    
    TwitterFactory tf = new TwitterFactory(cb.build());
    Twitter twitter = tf.getInstance();
    
    try {
        Query query = new Query("iphone");
        QueryResult result;
        result = twitter.search(query);
        System.out.println("Total amount of tweets: " + result.getTweets().size());
        List<Status> tweets = result.getTweets();
        
        for (Status tweet : tweets) {
            System.out.println("@" + tweet.getUser().getScreenName() + " : " + tweet.getText());
        }
    } catch (TwitterException te) {
        te.printStackTrace();
        System.out.println("Failed to search tweets: " + te.getMessage());
    }

这里是错误:

sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Relevant discussions can be found on the Internet at:
    http://www.google.co.jp/search?q=d35baff5 or
    http://www.google.co.jp/search?q=1446302e
TwitterException{exceptionCode=[d35baff5-1446302e 43208640-747fd158 43208640-747fd158 43208640-747fd158], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=3.0.5}
    at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:177)
    at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:61)
    at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:81)
    at twitter4j.TwitterImpl.get(TwitterImpl.java:1929)
    at twitter4j.TwitterImpl.search(TwitterImpl.java:306)
    at jku.cc.servlets.TweetsAnalyzer.main(TweetsAnalyzer.java:38)
Caused by: 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
    at sun.security.ssl.Alerts.getSSLException(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
    at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
    at sun.security.ssl.ClientHandshaker.serverCertificate(Unknown Source)
    at sun.security.ssl.ClientHandshaker.processMessage(Unknown Source)
    at sun.security.ssl.Handshaker.processLoop(Unknown Source)
    at sun.security.ssl.Handshaker.process_record(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
    at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
    at java.net.HttpURLConnection.getResponseCode(Unknown Source)
    at sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(Unknown Source)
    at twitter4j.internal.http.HttpResponseImpl.<init>(HttpResponseImpl.java:34)
    at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:141)
    ... 5 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
    at sun.security.validator.PKIXValidator.engineValidate(Unknown Source)
    at sun.security.validator.Validator.validate(Unknown Source)
    at sun.security.ssl.X509TrustManagerImpl.validate(Unknown Source)
    at sun.security.ssl.X509TrustManagerImpl.checkTrusted(Unknown Source)
    at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source)
    ... 20 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source)
    at java.security.cert.CertPathBuilder.build(Unknown Source)
    ... 26 more
Failed to search tweets: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

共有1个答案

谢墨竹
2023-03-14
  1. 转到浏览器中的URL:
  • Firefox-单击HTTPS证书链(URL地址旁边的锁图标)。单击“详细信息”>“安全性”>“显示证书”>“详细信息”>“导出..”。拾取名称并选择文件类型example.cer
  • Chrome-单击地址栏中的地址左边的站点图标,选择“证书”->“详细信息”->“导出”并以“DER编码二进制,单一证书”的格式保存。

现在您有了带有keystore的文件,您必须将其添加到JVM中。确定cacerts文件的位置。C:\程序文件(x86)\java\jre1.6.0_22\lib\security\cacerts。

接下来,将example.cer文件导入命令行中的cacerts(可能需要管理员命令提示符):

keytool-import-alias example-keystore“C:\program Files(x86)\java\jre1.6.0_22\lib\security\cacerts”-file example.cer

系统将要求您输入密码,默认设置为changeit

重新启动JVM/PC。

来源:http://magicmonster.com/kb/prg/java/ssl/pkix_path_building_failed.html

 类似资料:
  • 我已经使用Homebrew安装了java(11-OpenJDK11.0.2)、scala(2.13.1)和sbt(1.3.4)。然后我尝试向Java的密钥库添加证书: 但当我尝试使用sbt(通过idea或从console)时,我会遇到这样的错误: ::::错误服务器访问错误:PKIX路径构建失败:sun.security.provider.certpath.suncertpathbuilderEx

  • 我正在尝试使用twitter4j库为我的Java项目获取tweets,该项目使用(可以在stack trace中看到)。在第一次运行时,我收到一个关于证书和的错误。然后我通过以下方式添加了twitter证书: 但没有成功。下面是获取Tweets的程序: 这里有一个错误:

  • 问题内容: 我正在尝试为我的Java项目使用twitter4j库获取推文。在我的第一次运行中,我得到了关于证书和的错误。然后我通过以下方式添加了Twitter证书: 但是没有成功。这是获取推文的过程: 这是错误: 问题答案: 在你的firefox浏览器中转到URL,单击HTTPS证书链(URL地址旁边的锁定图标)。点击。提取名称,然后选择文件类型。现在,你有了带有密钥库的文件,并且必须将其添加到J

  • 我正在使用WSO2 API管理器和Keyclope服务器进行API网关和用户身份验证。两者都在Openshift 3.11上运行。在浏览器上,尝试重定向到wso2 apim上的存储页面时出现以下错误。此外,我正在为这两个服务器使用一个使用keytool生成的自签名证书,它还分别导入到JVM cacerts中。Open JDK版本为1.8。 我在使用javax时遇到了致命的问题。网ssl。SSLEx

  • 我在Glassfish上有一个使用GoDaddy SSL证书的JAVA EE webapp。HTTP侦听器重定向到HTTPS侦听器。 我正在尝试让从Googlebot爬虫的网络应用程序中获取页面。该代码在未启用SSL的暂存服务器上按预期工作。但是,在具有GoDaddy SSL证书的实时服务器上,当尝试获取网页时,我会收到以下错误。 我已经尝试了这里指定的解决方法(http://www.mkyong

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

  • 我正在使用eclipse,在尝试执行此函数时,出现了以下错误。 我想发送一个GET请求以及证书和密钥。我可以下载任何格式的证书,所以这不是问题。我知道我需要将此添加到java keystone中,但在尝试了各种建议后,我仍然无法修复此问题。 下面是错误-

  • 我使用“react-native init helloworld”创建了示例react-native项目。当我运行“React-Native Run-Android”时,我会不断地看到以下错误。我尝试与解决方案提供类似的解决方案在这些链接。但它并没有解决问题。 后1后2 react原生项目中的Android Build.Gradle: