0

問題

centos で Apple APNS を設定する際に問題が発生しています。Apache tomcat をデプロイして正常に動作させています。また、Javapns を使用してプッシュ メッセージを送信しています。

私のプッシュ通知は、Windows (Eclipse 内および Apache スタンドアロン) で正常に動作しています。しかし、アプリケーションをサーバー (centos 6) にデプロイすると、エラーが発生します: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 信頼できる証明書が見つかりません

私が言ったように、Windowsで完璧に機能するp12証明書を使用しています。しかし、Centosでは運がありません。

環境:

Spring 4 がデプロイされた Web アプリケーションを含む Apache Tomcat。centos 6 で実行されています。Java 1.7.57 を使用しています。もちろん、プッシュ通知を開始するために Javapns を使用します。そして、私の P12 証明書が WEB-INF/certs/certificate.p12 内に配置されていることは言及する価値があると思います。

- Web サーバー用の SSL 証明書を持っていません。

私の質問:

  • Javapns のドキュメントには、Javapns は Web アプリケーションの一部として、またはスタンドアロンとしても機能するように設計されていると記載されていますが、サービスを実行できるようにするためにサーバーで変更する必要がある特別な構成はありますか?

  • 私を混乱させているのは、同じp12証明書がローカルでは機能しますが、Linuxでは機能しないということですか?

  • これはサーバー上のセキュリティ チェーンに関連するものですか? またはそのようなサービスの実行を許可するApache tomcatの設定?

この問題に本当に行き詰まっていると感じたので、これを投稿して、ほとんどすべてを試しました。

前もって感謝します。

4

2 に答える 2

0

APNS を使用する場合、サーバーは SSL 経由で Apple APNS サーバーに接続します。受信したメッセージは、使用されている Java 環境が証明書の発行を認識していないことを意味します。そのため、サーバー証明書を検証するためのトラストチェーンを構築できません。

<javabin>/keytool -list -keystore <javahome>/jre/lib/security/cacertsJVM キーストアで Apple 証明書が見つかった場合は、まず次のコマンドで確認します。

そこに Apple 証明書が見つからない場合は、このコマンドを使用してインポートできます。

<javabin>/keytool -import -noprompt -trustcacerts -alias <an_alias> -file   <the_cert_file> -keystore <javahome>/jre/lib/security/cacerts -storepass changeit

Apple ルート証明書と中間証明書は、 https ://www.apple.com/certificateauthority/ で入手できます。

于 2015-07-28T03:10:26.277 に答える
0

Thank you muenzpraeger for your suggestion, but it was not the solution.

I could solve this through the great post found on http://cloudfields.net/blog/ios-push-notifications-encryption/

The problem as stated is related to authenticating the certificate to do communication over SSL. I had to command-line the Apple APNS certificate. and things worked like magic.

I am happy though for what you have posted as it lead me to read more about keystores.

Thank you for your help.

于 2015-07-29T06:53:45.717 に答える