2

在为开发pr创建推送通知提供程序时,我们正面临以下错误: 我想证书有什么问题,因为我启用了推送通知,然后创建了证书但我获得了certificate_unknown错误?SSL证书错误:certificate_unknown

main, RECV TLSv1 ALERT: fatal, certificate_unknown 
main, called closeSocket() 
main, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: certificate_unknown 
Error pushing notification(s): 
Invalid certificate chain (Received fatal alert: certificate_unknown)! Verify that the keystore you provided was produced according to specs... 
     at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:359) 
     at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:301) 
     at javapns.notification.PushNotificationManager.sendNotification(PushNotificationManager.java:258) 
     at javapns.Push.payload(Push.java:122) 
     at javapns.Push.alert(Push.java:36) 
     at com.applicationname.pns.PushNotification.main(PushNotification.java:31) 

//我的代码,我使用了推送通知

/** 
* 
*/ 
package com.applicationname.pns; 

import org.json.JSONException; 

import javapns.Push; 
import javapns.devices.Device; 
import javapns.notification.Payload; 
import javapns.notification.PushNotificationManager; 
import javapns.notification.PushNotificationPayload; 


public class PushNotification 
{ 
    private static final String HOST = "gateway.sandbox.push.apple.com"; 
    private static final int PORT = 2195; 
    private static final int BADGE = 66; 
    private static String iPhoneId = "5696ee2fa44c61fd21a7987d2b1bcf57faa1603e63cb57ff204b158fb90d28a3"; 
    private static String certificate = "D:/./trunk/Development/JavaPNS/src/com/applicationname/pns/privateKey.p12"; 
    private static String passwd = "[email protected]"; 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) 
    { 
     Push.alert("Hello World!", certificate, passwd, false,iPhoneId); 

     PushNotificationPayload payLoad = new PushNotificationPayload(); 

     try 
     { 
      payLoad.addAlert("Hello World!"); 
      payLoad.addBadge(10); 
     } 
     catch (JSONException e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 


} 
+0

您能告诉我们一些代码吗? –

+0

我已添加源代码。 – User97693321

+0

你得到一个'javax.net.ssl.SSLHandshakeException',但你的代码似乎没有包含任何网络。您是否确定发生了与您粘贴的代码完全相同的异常? –

回答

2

尝试加载公钥代替专用密钥

private static String certificate = "D:/./trunk/Development/JavaPNS/src/com/applicationname/pns/privateKey.p12"; 

私钥由SSL装服务器端的套接字。

1

您应该确保遵循procedure准备在官方JavaPNS网站上记录的证书。遵循此程序的开发人员可以获得积极的结果。

0

我在jdk 1.7中解决了这个问题,并且在p12文件的passwd长度大于或等于6之后使用了p12。否则,会发生以下错误: [[1]未传输到标记595d8..725bf javapns.communication.exceptions.InvalidCertificateChainException:无效的证书链(收到致命警报:certificate_unknown)!验证您提供的密钥仓库是按照规格生产的...]