Errore certificato SSL: certificate_unknown


11

Voglio creare un server di notifica push e durante l'installazione del certificato SSL e del file .p12 nel server ci troviamo di fronte al seguente errore: Voglio sapere qual è il problema con il certificato SSL perché sto ottenendo l'errore 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)

//codice sorgente

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

        }


}

Sto solo cercando di sapere se qualcun altro ha anche creato un server di sviluppo di notifiche push che mi può aiutare se mi manca qualcosa.
Utente 97693321

Ho rilasciato gli stessi certificati a "urbanairship" il fornitore di servizi di notifica push per ottenere notifiche push per l'ambiente di sviluppo in cui ha funzionato. Quindi voglio quello che sto facendo di sbagliato per creare il nostro server di notifica push?
Utente 97693321

Risposte:


9

È insolito caricare la chiave privata come richiesta client in un socket SSL. Personalmente penso che dovresti caricare la chiave pubblica. La chiave privata viene caricata dal socket SSL sul lato server. L'unica ragione per cui avresti bisogno della chiave privata è per comportarti come un server e accettare connessioni dall'altra parte, ma non sembra che tu lo stia facendo.

Questo potrebbe spiegare il messaggio "cert nel formato sbagliato".

In riferimento a:

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

6

Penso che l'errore sia abbastanza evidente, la catena di certificati in realtà non verifica correttamente il certificato. Forse ti stai perdendo uno o più dei concatenamenti necessari per verificare il tuo certificato finale?

Qualunque cosa sia, l'errore ti dà le istruzioni molto chiare su "Verifica che il keystore che hai fornito sia stato prodotto secondo le specifiche ...".

Non c'è niente che nessuno in questo sito possa aggiungere altro che leggere ciò che dice il tuo messaggio di errore e farlo - nessuno di noi ha sfere di cristallo, né possiamo risolvere magicamente il tuo problema.

Non vedo il punto nel pubblicare una domanda in cui non ci fornisci più informazioni oltre a un messaggio di errore MOLTO chiaro che ti dice esattamente cosa fare. Tutto ciò che possiamo dire è "fai quello che dice il messaggio di errore!"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.