最近、Google の Cloud Messaging for Android を知り、自分のアプリを統合して使用したいと考えました。プロジェクトの Android 側が機能し、アプリがサーバーに正しく登録されています。問題は、サーバーが GCM サーバーを認証できないように見えるため、GCM サーバーと通信できないことです。これが私が意味することです:
現在、私のサーバーは、キーストアとトラストストアを備えた単純な Java ベースの SSL サーバーです。トラストストアにはクライアントのキー (つまりアプリのキー) が含まれており、その逆も同様であり、クライアント/サーバーは SSL を介して問題なく相互に通信できます。アプリにメッセージを送信するために使用しているコードは次のとおりです。
Sender sender = new Sender( "API_KEY" );
Message message = new Message.Builder().addData( "message", description ).build();
Result result = sender.send( message, ID, 1 );
次の例外が発生します。
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
サーバーを起動するときに、トラスト/キーストアの名前とそれらのパスワードを渡してロードし、クライアントとの通信に使用できるようにします。問題は、現在トラストストアにクライアントのキーしか含まれていないため、サーバーはクライアントとのみ通信でき、他の誰とも通信できないことが問題であると思われます。これは正しいですか?もしそうなら、GCM証明書をトラストストアなどに追加する方法を知っている人はいますか?
どうもありがとう、どんな助けも大歓迎です:)
PSサーバーにトラストストアをロードする前に、クライアントにメッセージを送信しようとしましたが、アプリはそれを正常に受信しました。