2012-05-25 50 views
3

當使用p12文件從Java服務器嘗試Apple推送通知時,出現錯誤。我的p12文件或我的Java代碼有問題嗎?ValidatorException:在java中找不到可信任的證書

run: 
@:theodore nonis 
C=IN, CN=Apple Development IOS Push Services: com.ducont.myPushApp, UID=com.ducont.myPushApp 
theodore nonis 
ok 
init Stores... 
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: No trusted certificate found 
     at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174) 
     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1591) 
     at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:187) 
     at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:181) 
     at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:975) 
     at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:123) 
     at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516) 
     at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454) 
     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884) 
     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1096) 
     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1123) 
     at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1107) 
     at javatest.Main.APNSender(Main.java:88) 
     at javatest.Main.main(Main.java:114) 
Caused by: sun.security.validator.ValidatorException: No trusted certificate found 
     at sun.security.validator.SimpleValidator.buildTrustedChain(SimpleValidator.java:304) 
     at sun.security.validator.SimpleValidator.engineValidate(SimpleValidator.java:107) 
     at sun.security.validator.Validator.validate(Validator.java:218) 
     at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126) 
     at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209) 
     at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249) 
     at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:954) 
     ... 9 more 
BUILD SUCCESSFUL (total time: 2 seconds) 
+1

這似乎意味着您有一個空的信任庫。您不會顯示任何代碼或設置,或者輸出顯示的輸出或其內容,從而無法進一步評論。 – EJP

回答

-2

這是證書問題。可以有兩種解決方案:

1使用可信證書

2禁用證書檢查。對於普通的java代碼,可以這樣做(read here)。

在p12中應該有一些設置TrustManages的可能性。

+0

如何爲推送通知創建可信的p12文件? –

+0

您無法創建可信證書,只能託管它。 – alexey28

+0

有沒有什麼辦法來檢查p12文件信任或不在java? –

0

這可能是由java 1.9引起的,切換到java 1.8可能會解決你的問題。

相關問題