Erreur de certificat SSL: certificate_unknown

11

Je veux créer un serveur de notifications push et lors de l'installation du certificat SSL et du fichier .p12 dans le serveur, nous sommes confrontés à l'erreur ci-dessous: Je veux savoir quel est le problème avec le certificat ssl car j'obtiens une erreur 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)

//code source

    /**
     * 
     */
    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 = "password@1234";

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

        }


}
User97693321
la source
J'essaie juste de savoir si quelqu'un d'autre a également créé un serveur de développement de notifications push, il peut m'aider si je manque quelque chose.
User97693321
J'ai donné les mêmes certificats à "urbanairship" le fournisseur de services de notification push pour obtenir une notification push pour l'environnement de développement que cela a fonctionné. Donc, je veux ce que je fais mal pour créer notre propre serveur de notification push?
User97693321

Réponses:

9

Il est inhabituel de charger la clé privée en tant que demande client sur un socket SSL. Je pense personnellement que vous devriez charger la clé publique. La clé privée est chargée par le socket SSL côté serveur. La seule raison pour laquelle vous auriez besoin de la clé privée est d'agir comme un serveur et d'accepter les connexions de l'autre extrémité, mais vous ne semblez pas le faire.

Cela peut expliquer le message "cert in format incorrect".

En référence à:

private static String certificate = "D:/./trunk/Development/JavaPNS/src/com/applicationname/pns/privateKey.p12"
djangofan
la source
6

Je pense que l'erreur est assez évidente, votre chaîne de certificats ne vérifie pas correctement votre certificat. Vous manquez peut-être un ou plusieurs certificats de chaînage nécessaires pour vérifier votre certificat de fin final?

Quoi qu'il en soit, l'erreur vous donne l'instruction très claire de "Vérifier que le magasin de clés que vous avez fourni a été produit conformément aux spécifications ...".

Il n'y a rien que quiconque sur ce site puisse ajouter autre que lire ce que dit votre message d'erreur et le faire - aucun de nous n'a des boules de cristal, et nous ne pouvons pas résoudre votre problème comme par magie.

Je ne vois pas l'intérêt de publier une question où vous ne nous donnez pas plus d'informations qu'un message d'erreur TRÈS clair qui vous dit exactement quoi faire. Tout ce que nous pouvons dire, c'est "faites ce que dit le message d'erreur!"

Bart B
la source