Push-Benachrichtigung in PHP mittels PEM Datei

Ich habe durch Ray Wenderlich die tutorials auf push-Benachrichtigungen werden über ein PHP-Skript.

Referenz: http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1

http://www.raywenderlich.com/32963/apple-push-notification-services-in-ios-6-tutorial-part-2

Ich habe eine Tonne von Forschung, aber ich lief in ein Problem an Teil 2, wo laufen Sie push.php Datei mit dem ck.pem-Datei.

/Applications/XAMPP/bin/php push.php development

Mein einzige Unterschied ist, dass ich mit XAMPP und MAMP nicht.

Habe ich bestätigt, dass alle Erweiterungen installiert sind.

Ich bin in der Lage zu testen, mein Zertifikat in das terminal durch das tun:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushChatCert.pem -key PushChatKey.pem

Fordert es mich zur Eingabe meiner passphrase und ich. Funktioniert alles erfolgreich in das terminal.

Jedoch, wenn ich das push.php Datei, bekomme ich diese Fehler:

PHP-Warnung: stream_socket_client(): SSL-Vorgang ist fehlgeschlagen mit Fehlercode 1. OpenSSL-Fehler-Meldungen:
Fehler:14090086:SSL-Routinen:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
PHP-Warnung: stream_socket_client(): Failed to enable crypto in

PHP-Warnung: stream_socket_client(): unable to connect to ssl://gateway.in der sandbox.push.apple.com:2195 (Unbekannter Fehler) in on line 140

Linie 140 in der php-Datei ist:

$this->fp = stream_socket_client('ssl://' . $this->server, $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

Fand ich diese:

iOS push-Benachrichtigung funktioniert nicht, wenn mit crontab scheduler

https://devforums.apple.com/message/1054840#1054840

Push-Benachrichtigung in PHP

Ich habe wörtlich wiederholt alles. Ich weiß, dass meine passphrase korrekt ist. Habe ich neu erstellt, meine Zertifikate, pem-Dateien und Schlüsseln. Nichts funktioniert. Die gleichen Fehler, jedes mal, wenn ich dies tun.

Ich bin über verwirrt.

Hat jemand irgendwelche Vorschläge haben, oder wissen, was Los ist?

Danke!

UPDATE 1:

Ich habe auch versucht, die Einstellung der vollständige Pfad zur ck.pem-Datei, die nicht behoben werden kann der Fehler entweder.

  • Sind Sie sicher, dass Sie exportiert Ihre .der p12, richtig ? Stellen Sie sicher, Sie haben den private key, und nicht nur den öffentlichen Schlüssel, wenn Sie, exportieren Sie es aus Ihrem Schlüsselbund
  • Ich habe nur den Export der privaten Schlüssel. Ich wusste nicht, exportieren Sie den öffentlichen Schlüssel, da das tutorial hat mir nicht zu sagen, zu.
  • was ist der Wert von $ctx, und welche Möglichkeiten gibt es?
  • Optionen: stream_context_set_option($ctx, 'ssl', 'local_cert', $this->Zertifikate); stream_context_set_option($ctx, 'ssl', 'passphrase', $this->passphrase); $ctx-druckt Resource id #9 natürlich, ich habe keine Ahnung, was das bedeutet.
  • $this->certificate sollte der absolute Dateipfad für Ihr lokales Zertifikat.
  • Ich hatte ja erwähnt im Update 1, die mit dem vollständigen Pfad hat nicht funktioniert. Bitte siehe meine Antwort -- das war das problem.
  • Download Entrust.net Certification Authority (2048) von Anzuvertrauen ist Website. Verwenden Sie dann das Zertifikat mit dem OpenSSL-Befehl, mit -CAfile: openssl s_client -connect gateway.sandbox.push.apple.com:2195 -CAfile entrust-ca.pem. Sie sollten wahrscheinlich Benutzer TLS 1.0 und SNI, zu: openssl s_client -connect gateway.sandbox.push.apple.com:2195 -CAfile entrust-ca.pem -tls1 -servername gateway.sandbox.push.apple.com.
  • Hab ich schon beantwortet. Aber danke.

InformationsquelleAutor Sandy D. | 2015-01-29
Schreibe einen Kommentar