SSL証明書エラー:certificate_unknown


11

プッシュ通知サーバーを作成したいのですが、SSL証明書と.p12ファイルをサーバーにインストールしているときに、以下のエラーが発生します。

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

エラーはかなり自明だと思います。証明書チェーンは実際には証明書を適切に検証していません。おそらく、最終的な最終証明書を検証するために必要な1つ以上のチェーン証明書が不足していますか?

それが何であれ、エラーは「指定したキーストアが仕様に従って作成されたことを確認する...」という非常に明確な指示を与えます。

このサイトには、エラーメッセージの内容を読んでそれを実行する以外に誰も追加できないものはありません。私たちの誰も水晶玉を持っていませんし、魔法で問題を解決することもできません。

質問を投稿して、何をすべきかを正確に伝える非常に明確なエラーメッセージ以外の情報を提供しないという意味はわかりません。私たちが言えることは、「エラーメッセージの内容を実行すること」だけです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.