Tengo un problema con las notificaciones automáticas. Tengo un certificado p.12 que fue creado por un miembro del equipo y tengo el token del dispositivo para que se envíe el dispositivo. Estoy usando la biblioteca javapns hacer el empuje (también probé los javaapns lib con los mismos resultados), pero me siguen dando este error:No se pueden enviar notificaciones push usando Javapns/Javaapns Error de protocolo de enlace SSL
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:136)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.recvAlert(SSLSocketImpl.java:1720)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:954)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1138)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord(SSLSocketImpl.java:632)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(AppOutputStream.java:59)
at java.io.OutputStream.write(OutputStream.java:58)
at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:402)
at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:350)
at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:320)
at javapns.Push.sendPayload(Push.java:177)
at javapns.Push.combined(Push.java:100)
at PushTest.push(PushTest.java:43)
at PushTest.main(PushTest.java:25)
y este es el código que estoy utilizando para probar
try {
List<PushedNotification> n = Push.combined(text, 20, null, file, "********", false, token);
for (PushedNotification notification : n) {
if (notification.isSuccessful())
System.out.println("Push notification sent successfully to: " + notification.getDevice().getToken());
else {
String invalidToken = notification.getDevice().getToken();
Exception theProblem = notification.getException();
theProblem.printStackTrace();
ResponsePacket theErrorResponse = notification.getResponse();
if (theErrorResponse != null)
System.out.println(theErrorResponse.getMessage());
}
}
}
catch (CommunicationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (KeystoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
He leído y probado las sugerencias de varias de las otras publicaciones, incluida la importación del certificado en cacerts keystore, pero la importación también falla. Estoy desarrollando usando eclipse en una máquina de Windows.
¿Alguien familiarizado con este problema? Soy nuevo en el uso de ssl entonces quizás estoy haciendo algo mal o es que no puedo usar un certificado generado en otra máquina?
gracias save my life. – aybars
¡Simplemente guau! Sorprendentemente, exportar el certificado y la clave privada como p12 desde el llavero no funcionó. Pero tu solución sí. – Elendir