web-dev-qa-db-ja.com

ライブに接続できません 'ssl://gateway.Push.Apple.com:2195'

IOSデバイスでのプッシュ通知のAPNSphpコードで問題が発生しています。開発用と本番用に2つの別々の接続があります。

  1. .pemファイル証明書を追加してサーバー上で開発接続を構成しました。Passpharesは完全に機能し、通知も受け取りました。私の開発構成を見てください:

URL:'ssl://gateway.sandbox.Push.Apple.com:2195'

$Push = new ApnsPHP_Push(
    ApnsPHP_Abstract::ENVIRONMENT_SANDBOX,
    'APNS_Dev_ISAS.pem'
);
$myNewLogger = new MyNewLogger();
$Push->setLogger($myNewLogger);

// Set the Provider Certificate passphrase
$Push->setProviderCertificatePassphrase('1234567');

$Push->setRootCertificationAuthority('APNS_Dev_ISAS.pem');
$Push->connect();

問題:

  1. 次のパラメーターを追加して本番環境の接続を構成したのに、接続エラーが発生しました。

URL:ssl://gateway.Push.Apple.com:2195

$Push = new ApnsPHP_Push(
    ApnsPHP_Abstract::ENVIRONMENT_PRODUCTION,
    'APNS_PROD_ISAS.pem'
);
$myNewLogger = new MyNewLogger();
$Push->setLogger($myNewLogger);

// Set the Provider Certificate passphrase
$Push->setProviderCertificatePassphrase('12345678');

$Push->setRootCertificationAuthority('APNS_PROD_ISAS.pem');
$Push->connect();

接続エラー:情報:ssl://gateway.Push.Apple.com:2195を試行しています...エラー: 'ssl://gateway.Push.Apple.comに接続できません:2195 ':( 0)情報:接続を再試行します(1/3)...情報:ssl://gateway.Push.Apple.com:2195を試行しています...エラー:' ssl://に接続できませんGateway.Push.Apple.com:2195':(0)情報:接続を再試行してください(2/3)...情報:ssl://gateway.Push.Apple.com:2195を試行しています...エラー:接続できません'ssl://gateway.Push.Apple.com:2195'に接続します:(0)情報:接続を再試行します(3/3)...情報:ssl://gateway.Push.Apple.com:2195を試行しています...エラー:「ssl://gateway.Push.Apple.com:2195」に接続できません:(0)

私は問題をグーグルで検索し、いくつかの解決策を見つけました。すべてをチェックしましたが、すべて問題ありませんが、成功しません。

  • 私は開発と生産のために正しい道を使用しました。
  • 両方に個別の証明書.pemファイルを作成し、プッシャーアプリで証明書をテストしました。証明書は正しいです。
  • ポートも問題なく、開発URLと開発サーバーのプッシュ通知で同じポートが使用されているため、サーバーからのブロックはありません。

どんな助けでも本当にありがたいです。前もって感謝します。

6
Iffi

プッシュ通知用に作成された問題のある証明書(.pem)。

解決策:同じ問題を数日試した後、ミニ文字パスファレスで証明書を作成すると1234になる可能性があることがわかりました。これは完璧に機能し、IOSプッシュ通知サーバー。

これは他の誰かを助けるかもしれません。

ありがとう。

5
Iffi

PHPスクリプトを実行すると、同じ問題が発生しました。調査の結果、これら3つのキーペア値 'cafile'、 'C​​N_match'、および 'ciphers'にコメントしました。

その後、正常に動作し始めました。この返信が他の人にも役立つことを願っています。

$contextOptions = array(
'ssl' => array(
    'verify_peer' => false, // You could skip all of the trouble by changing this to false, but it's WAY uncool for security reasons.
//    'cafile' => 'NiteVisionWebPushFile.pem',
//    'CN_match' => 'gateway.Push.Apple.com', // Change this to your certificates Common Name (or just comment this line out if not needed)
  //  'ciphers' => 'HIGH:!SSLv2:!SSLv3',
    'disable_compression' => true,
));
0
Siddharth