繁体   English   中英

收到致命警报:handshake_failure

[英]Received fatal alert: handshake_failure

我正在尝试使用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代码中适应这一点。 这涉及创建自定义KeyStore等。有关完整的实现详细信息,请参阅 Stack Overflow答案。

在服务器上设置以下属性

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连接时,会发生此算法...同时检查服务器/客户端配置

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM