プッシュ通知サーバーを作成しようとしています。 telnetでssl://gateway.sandbox.Push.Apple.com:2195に接続します。
telnet gateway.sandbox.Push.Apple.com 2195
Trying 17.172.232.229...
Connected to gateway.sandbox.Push-Apple.com.akadns.net.
Escape character is '^]'.
私の* .pemは大丈夫です(別のサーバーで使用しています)。私は他のサーバーで同じプロジェクトを使用しますが、そこで動作しますが、他のサーバーのクローンは動作しません。
これらのエラーが表示されます。
Warning: stream_socket_client() [function.stream-socket-client]: SSL operation failed with code 1. OpenSSL Error messages: error:14094415:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate expired in /var/www/try.php on line 69
Warning: stream_socket_client() [function.stream-socket-client]: Failed to enable crypto in /var/www/try.php on line 69
Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.sandbox.Push.Apple.com:2195 (Unknown error) in /var/www/try.php on line 69
証明書は期限切れではなく、他のサーバーで機能し、日付は同じです。
誰かが間違いの可能性を知る手掛かりを持っていますか?
私は取り組んでいます
Apache/2.2.9 (Debian) PHP/5.2.17-0.dotdeb.0 with Suhosin-Patch mod_ssl/2.2.9 OpenSSL/0.9.8g
編集:異なるサーバーで同じ証明書を使用しても機能しないようです。たぶん、これはApplesサーバーによってブロックされています。
このために apn_on_Rails を使用しますが、pem file
を使用している限り、これは機能すると思います。証明書と中間証明書を再ダウンロードし、次の手順を使用してプッシュ通知pem
ファイルを再生成することでこれを修正しました。
Appleアプリケーションの証明書を取得したら、キーとApple証明書をp12ファイルとしてエクスポートします。これを行う方法の簡単な説明を次に示します。 :
1. Click the disclosure arrow next to your certificate in Keychain Access and select the certificate and the key.
2. Right click and choose `Export 2 items…`.
3. Choose the p12 format from the drop down and name it `cert.p12`.
Now covert the p12 file to a pem file:
$ openssl pkcs12 -in cert.p12 -out Apple_Push_notification_production.pem -nodes -clcerts
この種のエラーは、次の2つの状況で発生します。
.pem
ファイルは正しく作成されません(私の場合のように)。これらの2つのポイントを試してください。間違いなくエラーは発生しません。
私は同じ問題を抱えていましたが、私の場合の解決策は、絶対パスを必要とするそのPEM証明書でした
from ここ
ISPブロックポート2195と2196かもしれません。同じ問題があったので、それを開くように頼みましたが、うまくいきました。
あなたは言及します:
私は他のサーバーで同じプロジェクトを使用しますが、そこで動作しますが、他のサーバーのクローンは動作しません。
.pem証明書は転送されないことがわかりました。あるOS Xマシンで動作するアプリを別のOS Xマシンで動作させるために私が従った手順は次のとおりです(Apple以外のマシンでそれを行う方法がわかりません)。
これがお役に立てば幸いです
役立つ可能性のあるインターネットからのランダムな発見:
証明書の問題である可能性があります。ストリームオプションallow_self_signedおよびverify_peerを試して、それを確認してください。
明示的にsslv2://またはsslv3://を使用してみてください?
「/ dev/urandom」のアクセス許可の問題
Linuxボックスでも同様の問題がありました。私にとって、それはSELinuxの問題でした。
/ etc/selinux/configファイルで、SELINUX = enforcingをSELINUX = disabledに設定します。そして再起動します。それでおしまい。