SSL-Zertifikatfehler: certificate_unknown

11

Ich möchte einen Push-Benachrichtigungsserver erstellen und während der Installation des SSL-Zertifikats und der P12-Datei auf dem Server tritt der folgende Fehler auf: Ich möchte wissen, was mit dem SSL-Zertifikat nicht stimmt, da der Fehler "certificate_unknown" angezeigt wird.

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)

//Quellcode

    /**
     * 
     */
    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
quelle
Ich versuche nur zu wissen, ob jemand anderes auch einen Push-Benachrichtigungs-Entwicklungsserver erstellt hat. Er kann mir helfen, wenn mir etwas fehlt.
User97693321
Ich habe "urbanairship", dem Anbieter von Push-Benachrichtigungsdiensten, dieselben Zertifikate erteilt, um Push-Benachrichtigungen für die Entwicklungsumgebung zu erhalten, in der es funktioniert hat. Ich möchte also, was ich falsch mache, einen eigenen Push-Benachrichtigungsserver erstellen?
User97693321

Antworten:

9

Es ist ungewöhnlich, den privaten Schlüssel als Client-Anforderung in einen SSL-Socket zu laden. Ich persönlich denke, Sie sollten den öffentlichen Schlüssel laden. Der private Schlüssel wird vom SSL-Socket auf der Serverseite geladen. Der einzige Grund, warum Sie den privaten Schlüssel benötigen würden, besteht darin, sich wie ein Server zu verhalten und Verbindungen vom anderen Ende zu akzeptieren, aber das scheinen Sie nicht zu tun.

Dies könnte die Meldung "Zertifikat im falschen Format" erklären.

In Bezug auf:

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

Ich denke, der Fehler ist ziemlich offensichtlich, Ihre Zertifikatskette überprüft Ihr Zertifikat nicht richtig. Vielleicht fehlen Ihnen eines oder mehrere der Verkettungszertifikate, die zur Überprüfung Ihres endgültigen Endzertifikats erforderlich sind?

Was auch immer es ist, der Fehler gibt Ihnen die sehr klare Anweisung "Überprüfen Sie, ob der von Ihnen bereitgestellte Schlüsselspeicher gemäß den Spezifikationen erstellt wurde ...".

Es gibt nichts, was jemand auf dieser Website hinzufügen kann, außer zu lesen, was Ihre Fehlermeldung sagt, und dies zu tun - keiner von uns hat Kristallkugeln, noch können wir Ihr Problem auf magische Weise beheben.

Ich sehe keinen Sinn darin, eine Frage zu stellen, in der Sie uns nur eine SEHR klare Fehlermeldung geben, die Ihnen genau sagt, was zu tun ist. Wir können nur sagen: "Tu, was in der Fehlermeldung steht!"

Bart B.
quelle