2016-03-22 7 views
2

期限切れの証明書を更新して新しいapkをアップロードするまで、プッシュ通知スクリプトが機能していました。私はすべてをチェックし、私の証明書と規定は正しく見え、プッシュ通知サービスが有効になっています。また、サンドボックスの開発証明書でも動作します。Apple Pushプッシュサーバーに生産通知用に接続できません

プロダクション証明書を使用すると、エラーが発生し、インターネット上で見つかったものは何も役立ちませんでした。ここでは、コードは以下のとおりです。コードの上

<?php 

$deviceToken = '1b66005d6ee0e58eac581a29dce21c34083a3560d3a097b8224ce99412c7a5c5'; 
$message = 'test!'; 

$ctx = stream_context_create(); 
stream_context_set_option($ctx, 'ssl', 'cafile', 'apple_ca.pem'); // entrust ca certificate 
stream_context_set_option($ctx, 'ssl', 'local_cert', 'apn-dist.pem'); // my certificate 

// Open a connection to the APNS server 
$fp = stream_socket_client(
    'ssl://gateway.push.apple.com:2195', $err, 
    $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); 

if(!$fp) exit("Failed to connect: $err $errstr" . PHP_EOL); 

echo 'Connected to APNS' . PHP_EOL; 
// sending notification ... 

はこのエラーをダンプします。

PHP Warning: stream_socket_client(): Failed to enable crypto in test.php on line 14 
PHP Warning: stream_socket_client(): unable to connect to ssl://gateway.push.apple.com:2195 (Unknown error) in test.php on line 14 
Failed to connect: 0 

私はこのように私の証明書をテスト:

openssl s_client -connect gateway.push.apple.com:2195 -cert apn-dist.pem -debug -showcerts -CAfile apple_ca.pem 

それは成功です:

New, TLSv1/SSLv3, Cipher is AES256-SHA 
Server public key is 2048 bit 
Secure Renegotiation IS supported 
Compression: NONE 
Expansion: NONE 
SSL-Session: 
    Protocol : TLSv1 
    Cipher : AES256-SHA 
    Session-ID: 
    Session-ID-ctx: 
    Master-Key: 5E9F3C0A551D6A487*********** 
    Key-Arg : None 
    PSK identity: None 
    PSK identity hint: None 
    SRP username: None 
    Start Time: 1458680158 
    Timeout : 300 (sec) 
    Verify return code: 0 (ok) 
--- 

これは過去にprevioで働いていた私たちの証明書(caファイルもありません)。

答えて

0

pemライブラリを使用して手動で行うのではなく、すべての証明書とプロビジョニング用の処理を行うだけで問題を解決できました。それは非常に使いやすいです。

pem -o mycert.pem 

このコマンドを入力すると、プッシュ通知証明書を作成するためのAppleのユーザー名とパスワードを入力する必要があります。

関連する問題