Помилка сертифіката SSL: сертифікат_невідомий


11

Я хочу створити сервер push-повідомлень, і під час встановлення SSL-сертифіката та .p12-файлу на сервері ми стикаємося з наведеною нижче помилкою: я хочу знати, що з сертифікатом ssl не так, оскільки я отримую невідому помилку сертифікату.

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 = "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();
            }

        }


}

Я просто намагаюся знати, чи хтось ще створив сервер розробки push-повідомлень, він може мені допомогти, якщо я щось пропускаю.
User97693321

Я надав ті самі сертифікати на "urbanairship" постачальника послуг push-повідомлення, щоб отримати push-повідомлення для середовища розробки, в якій він працював. Тож я хочу, що я роблю неправильно, щоб створити власний сервер push push?
User97693321

Відповіді:


9

Незвично завантажувати приватний ключ як запит клієнта в SSL-розетку. Я особисто думаю, що вам слід завантажувати відкритий ключ. Приватний ключ завантажується SSL-сокетом на стороні сервера. Єдина причина, від якої вам знадобиться приватний ключ, - це діяти як сервер і приймати з'єднання з іншого кінця, але ви, схоже, цього не робите.

Це може пояснити повідомлення "cert у неправильному форматі".

Посилаючись на:

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

6

Я думаю, що помилка досить очевидна, ваш ланцюжок сертифікатів насправді не підтверджує ваш сертифікат належним чином. Можливо, вам не вистачає однієї або декількох ланцюгових сертів, необхідних для підтвердження остаточного кінцевого терміна?

Що б там не було, помилка дає вам дуже чітку інструкцію "Перевірте, чи надана вами брелок для ключів була виготовлена ​​відповідно до специфікацій ...".

На цьому сайті ніхто не може додати нічого, крім того, щоб прочитати, що говорить ваше повідомлення про помилку, і зробити це - ніхто з нас не має кришталевих кульок, і ми не можемо магічно виправити вашу проблему.

Я не бачу сенсу розміщувати питання, де ви не даєте нам більше ніякої інформації, окрім ДУЖЕ ясного повідомлення про помилку, яке точно говорить вам, що робити. Все, що ми можемо сказати, - це "роби те, що говорить повідомлення про помилку!"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.