ข้อผิดพลาดใบรับรอง SSL: certificate_unknown


11

ฉันต้องการสร้างเซิร์ฟเวอร์การแจ้งเตือนแบบพุชและขณะติดตั้งใบรับรอง SSL และไฟล์. p12 ในเซิร์ฟเวอร์เราพบข้อผิดพลาดด้านล่าง: ฉันต้องการทราบว่ามีอะไรผิดปกติกับใบรับรอง 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 = "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

ฉันได้รับใบรับรองเดียวกันกับ "urbanairship" ผู้ให้บริการการแจ้งเตือนแบบพุชเพื่อรับการแจ้งเตือนแบบพุชสำหรับสภาพแวดล้อมการพัฒนาที่ใช้งานได้ ดังนั้นฉันต้องการสิ่งที่ฉันทำผิดเพื่อสร้างเซิร์ฟเวอร์การแจ้งเตือนแบบพุชของเราเอง?
User97693321

คำตอบ:


9

การโหลดคีย์ส่วนตัวเป็นการร้องขอไคลเอนต์ไปยังซ็อกเก็ต SSL เป็นเรื่องผิดปกติ ฉันคิดว่าคุณควรจะโหลดกุญแจสาธารณะ ไพรเวตคีย์ถูกโหลดโดยซ็อกเก็ต SSL ที่ฝั่งเซิร์ฟเวอร์ เหตุผลเดียวที่คุณต้องการรหัสส่วนตัวคือทำหน้าที่เหมือนเซิร์ฟเวอร์และยอมรับการเชื่อมต่อจากส่วนอื่น ๆ แต่ดูเหมือนคุณจะไม่ทำเช่นนั้น

นี่อาจอธิบายข้อความ "ใบรับรองในรูปแบบที่ไม่ถูกต้อง"

ในการอ้างอิงถึง:

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

6

ฉันคิดว่าข้อผิดพลาดนั้นชัดเจนในตัวเองห่วงโซ่ใบรับรองของคุณไม่ได้ตรวจสอบใบรับรองของคุณอย่างถูกต้อง บางทีคุณอาจพลาดการผูกสายเชื่อมโยงอย่างน้อยหนึ่งข้อที่จำเป็นในการตรวจสอบใบรับรองสุดท้ายของคุณ?

ข้อผิดพลาดจะช่วยให้คุณมีคำสั่งที่ชัดเจนมากในการ "ตรวจสอบว่าที่เก็บคีย์ที่คุณระบุถูกสร้างขึ้นตามข้อกำหนด ... "

ไม่มีอะไรที่ทุกคนในไซต์นี้สามารถเพิ่มได้นอกจากอ่านข้อผิดพลาดของคุณว่าจะทำอะไร - ไม่มีพวกเรามีลูกบอลคริสตัลและเราไม่สามารถแก้ไขปัญหาของคุณได้อย่างน่าอัศจรรย์

ฉันไม่เห็นประเด็นในการโพสต์คำถามที่คุณไม่ให้ข้อมูลเพิ่มเติมนอกเหนือจากข้อความแสดงข้อผิดพลาดที่ชัดเจนมากซึ่งจะบอกคุณว่าต้องทำอย่างไร ทั้งหมดที่เราสามารถพูดได้คือ "ทำสิ่งที่ข้อความแสดงข้อผิดพลาดบอก!"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.