4

Appleのプッシュ通知に夢中!Ray Wanderlichチュートリアルに従ってアプリとテスト通知を開発しましたが、ファイル .pem を配布ファイルに変更し、接続文字列を gateway.sandbox.push-apple.com から gateway.push-apple に変更するまで、すべて正常に機能しました。コム。

メッセージを送信しようとすると、サーバーが返します

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to     ssl://gateway.push.apple.com:2195 (Connection timed out)
Failed to connect: 110 Connection timed out

php ファイルと .pem ファイルは TMDHosting にあります。ポート番号 2195 が閉じているかどうかを尋ねてみました。グーグルで調べたところ、エラーはポートが閉じていることを意味することがわかったからです。

ただし、エラーが証明書またはサーバーにリンクされているかどうかはわかりません。

奇妙なことに、ターミナルで手順に従って .pem ファイルをテストすると、すべてが機能しているように見えます。

CONNECTED(00000003)
    depth=1 /C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c)     2009 Entrust, Inc./CN=Entrust Certification Authority - L1C
    verify error:num=20:unable to get local issuer certificate
    verify return:0
    ---
    Certificate chain
     0 s:/C=US/ST=California/L=Cupertino/O=Apple Inc/OU=Internet     Services/CN=gateway.push.apple.com
       i:/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c)     2009 Entrust, Inc./CN=Entrust Certification Authority - L1C
     1 s:/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c)     2009 Entrust, Inc./CN=Entrust Certification Authority - L1C
       i:/O=Entrust.net/OU=www.entrust.net/CPS_2048 incorp. by ref. (limits liab.)/OU=(c)     1999 Entrust.net Limited/CN=Entrust.net Certification Authority (2048)
---
Server certificate
-----BEGIN CERTIFICATE-----
    MIIEXTCC..........
-----END CERTIFICATE-----
    subject=/C=US/ST=California/L=Cupertino/O=Apple Inc/OU=Internet         Services/CN=gateway.push.apple.com
    issuer=/C=US/O=Entrust, Inc./OU=www.entrust.net/rpa is incorporated by reference/OU=(c)      2009 Entrust, Inc./CN=Entrust Certification Authority - L1C
    ---
    No client certificate CA names sent
    ---
    SSL handshake has read 2541 bytes and written 2039 bytes
    ---
    New, TLSv1/SSLv3, Cipher is AES256-SHA
    Server public key is 1024 bit
    Secure Renegotiation IS supported
   Compression: NONE
   Expansion: NONE
    SSL-Session:
    Protocol  : TLSv1
    Cipher    : AES256-SHA
        Session-ID: 
        Session-ID-ctx: 
        Master-Key:     CBA98981BB512ED2FDF0C003F4556FDDA564BEBBEFC6528C37D8E0336BC141AEC6D7E014568B334B8330FFFE266E8CB4
    Key-Arg   : None
    Start Time: 1332945845
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

これは、.pem の問題ではないと考えさせられます...

私が間違っている?

ここで同様の質問をすべて読み、ポート番号を 2195 から 30 に変更しようとしましたが、何も変わりません。ヒント?

編集:私はそれを見つけ私の問題と同じようです:TMDHostingは私に言いました

...あなたは共有ホスティング環境にあり、ポートを開くことはできません。ただし、ポート 2195 で接続しているアドレスは、当社のサーバーに関連付けられていないことに注意してください。つまり、ポート 2195 でリモート サーバーに接続しようとしています。上記で指定したポートにこの接続を確立するには、サーバーではなくリモート サーバーで着信接続用にポートが開かれていることを確認する必要があります。私たちとのあなたのアカウントが依存している.

VPSは必要ですか?

EDIT2

私が従ったチュートリアルで私は見つけました

.. インターネットに接続されたサーバーが必要です。プッシュ通知は常にサーバーから送信されます。開発では Mac をサーバーとして使用できますが (このチュートリアルではこれを行います)、本番環境で使用するには、少なくとも VPS (Virtual Private Server) のようなものが必要です。安価な共有ホスティング アカウントでは不十分です。サーバーでバックグラウンド プロセスを実行し、SSL 証明書をインストールし、特定のポートで発信 TLS 接続を確立できる必要があります。ほとんどの共有ホスティング プロバイダーはこれを許可していませんが、要求すれば可能です。ただし、Linode などの VPS ホストを使用することを強くお勧めします。

最後に、VPS が必要だと思います。確実に確認できますか? しかし、サンドボックス サーバーでプッシュ通知を送信すると、VPS なしで正常に動作するのはなぜですか?

最終更新: (誰かを助けることを願っています) バグがあったようです。正しいことは、ホスティング (TMDHosting) からサンドボックスにも本番サーバーにもプッシュ通知を送信できないためです: 私の共有ホスティングには 2195 がありませんポートオープン。プロバイダーの変更: すべてが機能します。

4

1 に答える 1

0

ミウィ、

この詳細な記事をありがとう。

私たちは同様の問題を抱えており、それが私たちを狂わせています。

証明書をテストすると、「verify error:num=20:unable to get local issuer certificate」以外は機能しているように見えます

とにかく、あなたと同じように、openssl のコマンド ライン テストで有効なハンドシェイクを取得します。

サンドボックス/開発証明書も機能させることができます。

切り替えが必要な場合に備えて、切り替えたプロバイダーを教えていただけますか?

ありがとう。

于 2012-04-12T07:35:34.440 に答える