2011-12-05 34 views
6

Tôi đang cố gắng sử dụng Java APNS - một dự án mã nguồn mở - để gửi thông báo đẩy tới iPhone. Tuy nhiên, tôi đang gặp lỗi.Lỗi Java APNS (Dịch vụ thông báo đẩy của Apple)

Tôi đã sử dụng tệp .pem làm chứng chỉ. Đây có phải là tệp .p12 không? Tôi không chắc chắn sự khác biệt là gì, nhưng tôi đọc ở đâu đó trực tuyến rằng có sự khác biệt giữa các định dạng tệp này.

Đây là mã:

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); 

Và đây là lỗi:

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 

Trả lời

10

Java APNS dự kiến ​​các CERT như đuôi .p12 tập tin.

Bạn phải kiểm tra cả khóa cá nhân và chứng chỉ trong keychain của mình. sau đó phải cấp nhấp chuột> "xuất khẩu 2 file" và xuất khẩu chúng bạn phải cung cấp cho nó một mật khẩu, mật khẩu này, bạn phải gõ vào đây

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

như XXXX của bạn

may mắn

EDIT:

.P12 - PKCS # 12, chứa chứng chỉ khóa riêng tư được lưu bằng mật khẩu .PEM - là chứng chỉ được mã hóa Base64, bị khóa „-----BEGIN CERTIFICATE-----“ and „-----END CERTIFICATE-----“

Các vấn đề liên quan