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ファイルもありません)。