2013-11-01 38 views
1

工作燈SSL錯誤,我從在新的項目中定義的例子推送通知的PushAdapter,而且,我已經添加了APNS證書,sandbox.p12原生API的應用程序(本機API),添加在應用程序descriptor.xml正確bundleId價值,但是,我不斷收到此錯誤:使用本地服務器自由

[WARNING ] Failed to retreive invalid devices 
javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 
[ERROR ] Couldn't get feedback connection 
javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 
[ERROR ] Unknown exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 
Unknown exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 

這是工作燈的全新安裝(6.0.0.20130909-1459),我嘗試了兩個獨立的安裝(一個進入Eclipse,一個進入RAD),同樣的錯誤。

是否有需要做推送測試的工作燈開發服務器(自由的Websphere)環境中工作的SSL工作一些額外的工作?尚未訂購任何設備,但不知道爲什麼會發生此錯誤或者與此相關。

詳細的跟蹤是在這裏:

[11/1/13 11:50:20:834 EDT] 00000034 com.worklight.core.exceptions.InstrumentedException   E Unknown exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 
com.worklight.core.exceptions.InstrumentedException: Unknown exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 
    at com.worklight.core.exceptions.DefaultExceptionHandler.handleException(DefaultExceptionHandler.java:56) 
    at com.worklight.core.tasks.TaskThread.run(TaskThread.java:113) 
Caused by: java.lang.RuntimeException: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 
    at com.notnoop.apns.internal.Utilities.parseFeedbackStreamRaw(Utilities.java:201) 
    at com.notnoop.apns.internal.Utilities.parseFeedbackStream(Utilities.java:211) 
    at com.notnoop.apns.internal.ApnsFeedbackConnection.getInactiveDevicesImpl(ApnsFeedbackConnection.java:87) 
    at com.notnoop.apns.internal.ApnsFeedbackConnection.getInactiveDevices(ApnsFeedbackConnection.java:67) 
    at com.notnoop.apns.internal.AbstractApnsService.getInactiveDevices(AbstractApnsService.java:99) 
    at com.notnoop.apns.internal.ApnsServiceImpl.getInactiveDevices(ApnsServiceImpl.java:36) 
    at com.worklight.integration.notification.apns.ApplicationConnection.getInactiveDevices(ApplicationConnection.java:110) 
    at com.worklight.integration.notification.apns.APNSMediator.maintain(APNSMediator.java:95) 
    at com.worklight.integration.notification.Dispatcher.maintain(Dispatcher.java:148) 
    at com.worklight.integration.notification.NotificationCleanupTask.step(NotificationCleanupTask.java:29) 
    at com.worklight.core.tasks.TaskThread.run(TaskThread.java:111) 
Caused by: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:154) 
    at sun.security.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1961) 
    at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1077) 
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) 
    at sun.security.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:882) 
    at sun.security.ssl.AppInputStream.read(AppInputStream.java:102) 
    at sun.security.ssl.AppInputStream.read(AppInputStream.java:69) 
    at java.io.DataInputStream.readInt(DataInputStream.java:387) 
    at com.notnoop.apns.internal.Utilities.parseFeedbackStreamRaw(Utilities.java:192) 
    ... 10 more 
+0

我發現這個問題的答案,但是,我不能標記這個作爲答案。它讓我害怕一點,沒有人回答這個問題。問題是Java 1.7不能處理p12證書,而不是1.6,並且Worklight使用開源Java PNS(http://code.google.com/p/javapns)發送Apple推送通知。 – DavidW

+0

(繼續!!)我沒有看到使用p12的任何解決方法,但James Low在他的博客中提供了一些信息(http://jameslow.com/2013/04/24/iphone-push-notifications-與-javapns-on-google-app-engine /),但是,這需要從p12更改爲JKS,這是Worklight無法完成的,因爲這是「烘焙」。 – DavidW

回答

1

工作燈產品從未使用過http://code.google.com/p/javapns推送,它使用com.notnoop.apns。此軟件包可與Oracle JDK 1.6和1.7配合使用 您能否更清楚地瞭解您使用的是哪個JDK的準確版本? 我在嵌入式Liberty + Oracle JDK 1.7_07b + iPhone 5上測試了推送樣本,它工作正常。 您是如何創建此證書的?你可以一步一步地寫下你所做的事情嗎? (並指定您複製的每個文件,按照方式編輯)

如果您要求使用javaPNS:Ofcourse,因爲它是一個開放式框架,所以您可以手動將任何jar複製(並使用)到您的Worklight項目中但是,看起來這個javaPNS jar有一些SSL錯誤。

你爲什麼不看工作燈的推送通知樣本,並從那裏(http://www.ibm.com/developerworks/mobile/worklight/getting-started.html#client-basics)你的工作方式? (工作燈帶有一個工作推送通知解決方案,適用於JDK1.6或1.7沒有問題與您的PKCS12證書)

+0

對不起,我認爲com.notnoop .apns是javapns的一部分,我的不好;-)。我的測試使用Worklight提供的示例代碼。它無法在我的計算機上使用1.7(Mac OSX)。它在我切換到使用1.6時有效。這顯然與端口,證書或項目配置無關。 – DavidW

2

這看起來像是從服務器試圖測試蘋果推/反饋服務的連接錯誤。

幾件事情要檢查:

  1. 是對開發或分發構建的應用程序?
  2. 如果進行開發,請確保您使用的是開發SSL證書。將證書和私鑰導出到名爲的文件中:apns-certificate-sandbox.p12
  3. 如果分發,請確保您使用的是生產SSL證書。導出證書和私鑰到一個文件名爲:APNS證書,production.p12
  4. 確保.p12文件已正確創建並指定應用程序描述符文件對應的密碼。
  5. 確保您的Worklight服務器可以訪問APN主機/端口以進行推送和反饋服務。即防火牆端口需要以下被打開:
    • gateway.push.apple.com,端口2195
    • gateway.sandbox.push.apple.com,端口2195
    • feedback.push.apple.com ,端口2196
    • feedback.sandbox.push.apple。COM端口2196
+0

即使通知在Worklight服務器上運行,我們仍然會收到此錯誤,但僅使用Apple通知。錯誤:com.notnoop.apns.internal.ApnsFeedbackConnection getInactiveDevices無法檢索無效設備,java.lang.RuntimeException:javax.net.ssl.SSLHandshakeException:收到致命警報:certificate_revoked ...也,com.notnoop.apns.internal。 ApnsFeedbackConnection.getInactiveDevicesImpl。流程每小時運行一次,我們的通知正在運行。這個過程是什麼?有人可以指向我的文檔嗎? WAS 8.0.0.6,JDK 1.6。 – DavidW

+0

大衛,看起來像一個不同的錯誤...注意它說'certificate_revoked'而不是'certificate_unknown',這聽起來像蘋果撤銷你的證書。我不知道爲什麼通知會繼續工作。您是否嘗試過獲取/生成新的SSL證書? – lizet

+0

我的通知工作正常。該錯誤只發生在這個小時過程中。所以,我的問題並不是真正的錯誤(儘管我很想知道),而是什麼Worklight服務器進程看起來像是在小時基礎上檢查Worklight中的通知數據?我沒有看到它記錄在任何地方。 – DavidW

0

在我身邊已經veririfed,在OS X(有時在Windows太實際),該certificate_unknown引發錯誤使用JRE 7,而不是JRE 6時看來,在工作燈使用notnoop開源庫沒有處理好Java 7中

https://github.com/notnoop/java-apns/issues/54