无法发布Twitter状态更新,并显示错误“找不到可信证书”

时间:2015-02-16 13:04:31

标签: java ssl twitter ssl-certificate twitter4j

我有一个java进程正在使用Twitter4J向twitter发布更新。我有所有合适的代币和钥匙。当我尝试发布更新时,我收到此错误。我已经看到Twitter去年更新了它的证书,我已经将Verisign的Class 3 G5证书添加到我的cacerts文件中。但这似乎不起作用。广泛的网上搜索还没有找到一个明确的程序来将正确的证书添加到twitter api的cacerts文件中。

16/02/2015 11:53:13 PM :  com.ibm.jsse2.util.g: No trusted certificate found Relevant discussions can be found on the Internet at:  http://www.google.co.jp/search?q=2fc5b7cb or  http://www.google.co.jp/search?q=11613e17 Twitter
Exception{exceptionCode=[2fc5b7cb-11613e17 2fc5b7cb-11613ded 2fc5b7cb-11613ded], statusCode=-1, message=null, code=-1, retryAfter=-1, rateLimitStatus=null, version=4.0.1}
16/02/2015 11:53:13 PM :   at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:179)
16/02/2015 11:53:13 PM :   at twitter4j.HttpClientBase.request(HttpClientBase.java:53)
16/02/2015 11:53:13 PM :   at twitter4j.HttpClientBase.post(HttpClientBase.java:82)
16/02/2015 11:53:13 PM :   at twitter4j.TwitterImpl.post(TwitterImpl.java:2004)
16/02/2015 11:53:13 PM :   at twitter4j.TwitterImpl.updateStatus(TwitterImpl.java:251)
16/02/2015 11:53:13 PM :  Caused by: 
16/02/2015 11:53:13 PM :  javax.net.ssl.SSLHandshakeException: com.ibm.jsse2.util.g: No trusted certificate found
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.n.a(n.java:36)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.sc.a(sc.java:442)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.gb.a(gb.java:18)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.gb.a(gb.java:205)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.hb.a(hb.java:46)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.hb.a(hb.java:57)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.gb.n(gb.java:285)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.gb.a(gb.java:146)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.sc.a(sc.java:88)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.sc.g(sc.java:437)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.sc.a(sc.java:544)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.sc.startHandshake(sc.java:124)
16/02/2015 11:53:13 PM :   at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:48)
16/02/2015 11:53:13 PM :   at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:39)
16/02/2015 11:53:13 PM :   at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:899)
16/02/2015 11:53:13 PM :   at com.ibm.net.ssl.www2.protocol.https.b.getOutputStream(b.java:47)
16/02/2015 11:53:13 PM :   at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:137)
16/02/2015 11:53:13 PM :   ... 8 more
16/02/2015 11:53:13 PM :  Caused by: 
16/02/2015 11:53:13 PM :  com.ibm.jsse2.util.g: No trusted certificate found
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.util.f.a(f.java:154)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.util.f.b(f.java:135)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.util.d.a(d.java:12)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.gc.a(gc.java:28)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.gc.checkServerTrusted(gc.java:16)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.gc.b(gc.java:82)
16/02/2015 11:53:13 PM :   at com.ibm.jsse2.hb.a(hb.java:308)
16/02/2015 11:53:13 PM :   ... 20 more

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。有2个证书文件。 cacerts和jssecacerts以及JVM用于查找证书的文件取决于系统属性设置和是否存在任何文件。我有正确的证书,但是它应该放在csrts文件中,它应该在jssecacerts文件中。有关信任管理者及其如何使用证书的更多信息,请参阅here