2011-12-05 80 views
6

我想使用Java APNS - 一個開源項目 - 向iPhones發送推送通知。 雖然我收到了一個錯誤。Java APNS(蘋果推送通知服務)錯誤

我已經使用.pem文件作爲證書。這應該是一個.p12文件嗎?我不確定它們有什麼不同,但是我在網上的某處看到這些文件格式存在差異。

下面是代碼:

ApnsService service = 
     APNS.newService() 
      .withCert("gpk.pem", "XXXX") 
      .withSandboxDestination() 
      .build(); 


    String payload = APNS.newPayload().alertBody("Can't be simpler than this!").build(); 
    String token = "theTokenIsRemoveHere"; 
    service.push(token, payload); 

這裏是錯誤:

Exception in thread "main" com.notnoop.exceptions.InvalidSSLConfig: java.io.IOException: toDerInputStream rejects tag type 45 
    at com.notnoop.apns.internal.Utilities.newSSLContext(Utilities.java:102) 
    at com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:161) 
    at com.notnoop.apns.ApnsServiceBuilder.withCert(ApnsServiceBuilder.java:124) 
    at com.geomobsters.cli.ApnsClient.main(ApnsClient.java:12) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
Caused by: java.io.IOException: toDerInputStream rejects tag type 45 
    at sun.security.util.DerValue.toDerInputStream(DerValue.java:806) 
    at com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore.engineLoad(PKCS12KeyStore.java:1201) 
    at java.security.KeyStore.load(KeyStore.java:1185) 
    at com.notnoop.apns.internal.Utilities.newSSLContext(Utilities.java:87) 
    ... 8 more 

回答

10

的Java APNS期待的證書作爲.p12文件。

您必須檢查鑰匙串中的私鑰和證書。 然後右鍵點擊 - >「出口2個文件」 並導出 你必須給它一個密碼,這個密碼,您必須在這裏

.withCert("gpk.pem", "XXXX") 

鍵入作爲您XXXX

好運

編輯:

.P12 - PKCS#12,包含證書和密碼保存的私鑰 .PEM - 是Base64編碼的證書,被鎖定„-----BEGIN CERTIFICATE-----「 and „-----END CERTIFICATE-----「