3

I'm trying to send push notifications to my device using javapns library in liferay. Here's the code:

private void pushNotification(ActionRequest actionRequest,
            ActionResponse actionResponse) {

        try {
            System.out.println("Push");

            Push.alert("Hello World!", "ck.p12", "PASSPHRASE", false, "TOKEN");

        } catch (CommunicationException e) {
            System.out.println("CommunicationException");
            e.printStackTrace();
        } catch (KeystoreException e) {
            System.out.println("KeystoreException");
            e.printStackTrace();
        }

    }

I'm getting this error when the pushNotification is called:

ERROR [PushNotificationManager:450] Delivery error: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

I've googled it but couldn't find any solution.

Does anyone know how to solve this problem?

Marvin Pinto
  • 28,922
  • 7
  • 36
  • 53
Titouan de Bailleul
  • 12,690
  • 11
  • 64
  • 119

3 Answers3

9

The javax.net.ssl.SSLHandshakeException exception is usually thrown when the server you're trying to connect to does not have a valid certificate from an authorized CA.

Put simply, the server you're attempting to connect to is most likely using a self-signed certificate and you have to accomodate for that in your Java code. This involves creating a custom KeyStore, etc. See this Stack Overflow answer for full implementation details.

Community
  • 1
  • 1
Marvin Pinto
  • 28,922
  • 7
  • 36
  • 53
0

Set the following properties on the server

javax.net.ssl.keyStore=../keystore/keystoreFile.jks
javax.net.ssl.keyStorePassword=yourPassword
javax.net.ssl.trustStore=../keystore/keystoreFile.jks
javax.net.ssl.trustStorePassword=yourPassword
javax.net.debug=true

you can create your keystore using

keytool -genkey -alias myKeyStore -keyalg RSA -keystore /home/aniket/keystore/keystoreFile.jks
Aniket Thakur
  • 63,511
  • 37
  • 265
  • 281
0

This algo happens when for example the server only accept TLS and your client is trying to create a SSL connection... check also the server/client side config

exoddus
  • 2,110
  • 16
  • 26