Java 收到致命警报:握手失败

Java 收到致命警报:握手失败,java,push-notification,liferay,Java,Push Notification,Liferay,我正在尝试使用liferay中的javapns库向我的设备发送推送通知。代码如下: private void pushNotification(ActionRequest actionRequest, ActionResponse actionResponse) { try { System.out.println("Push"); Push.alert("Hello World!", "ck.p12",

我正在尝试使用liferay中的javapns库向我的设备发送推送通知。代码如下:

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

    }
调用pushNotification时,我遇到此错误:

ERROR [PushNotificationManager:450] Delivery error: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
我在谷歌上搜索过,但找不到任何解决方案


有人知道如何解决这个问题吗?

当您试图连接的服务器没有来自授权CA的有效证书时,通常会引发
javax.net.ssl.SSLHandshakeException
异常


简单地说,您尝试连接的服务器很可能使用自签名证书,并且您必须在Java代码中考虑这一点。这涉及到创建自定义的
密钥库
等。有关完整的实现详细信息,请参阅堆栈溢出应答。

在服务器上设置以下属性

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
您可以使用

keytool -genkey -alias myKeyStore -keyalg RSA -keystore /home/aniket/keystore/keystoreFile.jks

例如,当服务器仅接受TLS并且您的客户端尝试创建SSL连接时,就会发生此算法。。。同时检查服务器/客户端配置

是的,我也遇到了同样的问题。您需要向服务器提供密钥库和密钥库密码。