无法使用Javapns / Javaapns SSL握手失败发送推送通知
我的推送通知有问题。我有一个由团队成员创建的p.12证书,并且我拥有要推送到的设备的设备令牌。我正在使用javapns库进行推送(也尝试了具有相同结果的javaapns
lib),但我一直收到此错误:
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failureat 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)
这是我用来测试的代码
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();
}
我阅读并尝试了其他几篇文章中的建议,包括将证书导入cacerts密钥库,但导入也失败。我正在Windows机器上使用Eclipse开发。
有人熟悉这个问题吗?我是使用ssl的新手,所以也许我做错了什么,还是无法使用在另一台计算机上生成的证书?
回答:
我是一名新的iOS开发人员,之前也遇到过同样的问题。
我终于发现问题是由引起的p12 certificate
。我们不应该使用私钥p12文件,而是应该根据您的私钥和从Apple下载的证书生成p12。
请执行以下OpenSSL命令以获取正确的p12文件:
developer_identity.cer <= download from Applemykey.p12 <= Your private key
openssl x509 -in developer_identity.cer -inform DER -out developer_identity.pem -outform PEM
openssl pkcs12 -nocerts -in mykey.p12 -out mykey.pem
openssl pkcs12 -export -inkey mykey.pem -in developer_identity.pem -out iphone_dev.p12
之后,您应该用于iphone_dev.p12
与Apple服务器进行通信。
以上是 无法使用Javapns / Javaapns SSL握手失败发送推送通知 的全部内容, 来源链接: utcz.com/qa/403139.html