SSL 인증서 오류 : certificate_unknown


11

푸시 알림 서버를 만들고 싶습니다. 서버에 SSL 인증서와 .p12 파일을 설치하는 동안 다음 오류가 발생합니다 .cert_unknown 오류가 발생하여 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();
            }

        }


}

다른 사람이 푸시 알림 개발 서버를 만들 었는지 알고 자 노력하고 있습니다.
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.