2011-12-05 38 views
6

Estoy intentando usar Java APNS, un proyecto de código abierto, para enviar notificaciones automáticas a iPhones. Me está dando un error, sin embargo.Error de Java APNS (Servicio de notificación push de Apple)

He utilizado un archivo .pem como certificado. ¿Debería haber sido un archivo .p12? No estoy seguro de cuál es la diferencia, pero leí en algún sitio en línea que existe una diferencia entre estos formatos de archivo.

Aquí está el código:

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

Y aquí está el error:

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 

Respuesta

10

Java APN está contando con el certificado como .p12.

Debes comprobar la clave privada y el certificado en tu llavero. luego a la derecha click-> "exportación" 2 archivos y exportarlos hay que darle una contraseña, esta contraseña que tiene que escribir aquí

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

como su XXXX

buena suerte

EDITAR:

.P12 - PKCS # 12, contiene certificados y claves privadas guardadas con una contraseña .PEM - es certificado codificado en Base64, lockedby „-----BEGIN CERTIFICATE-----“ and „-----END CERTIFICATE-----“

Cuestiones relacionadas