2012-04-09 5 views
12

Ich versuche, Push-Benachrichtigung in meiner App zu tun und diesen Link http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12Terminal Fehler zwischen Verbindungs ​​SSL-Zertifikat und einen privaten Schlüssel für eine sichere Verbindung einzurichten:

mein System erfolgreich verbunden mit Telnet wurde, aber wenn i geben sie die Abfrage für den Anschluss sSL-Zertifikat und den privaten Schlüssel dann einen Fehler gefunden

$ openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert apns-dev-cert.pem -key apns-dev-key.pem 
unable to load client certificate private key file 
1301:error:0906D06C:PEM routines:PEM_read_bio:no start line:/SourceCache/OpenSSL098/OpenSSL098-44/src/crypto/pem/pem_lib.c:648:Expecting: ANY PRIVATE KEY 

jeder kann mir sagen, welche Art von Fehler und was die Lösung von ihm ist?

Vielen Dank im Voraus

Antwort

12

Der folgende Befehl ist gut genug, den Schlüssel/cert zu überprüfen:

openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert push_development.pem 

Der wichtigste Teil ist sowohl Zertifikat und private Schlüssel zu wählen, wenn die P12 von Schlüsselbund exportieren (Sie werden nach 3 Passwörtern gefragt werden, eines für die .p12, eines für das Zertifikat, eines für den privaten Schlüssel).

P12 Zur Umrechnung in .PEM, folgen Sie den Anweisungen von Apple:

openssl pkcs12 -in CertificateName.p12 -out CertificateName.pem -nodes 
+0

Es hilft nicht immer noch geben "nicht in der Lage, Client-Zertifikat privaten Schlüsseldatei zu laden". 'openssl s_client -connect api.development.push.apple.com:443 -cert mein.pem' – YumYumYum

13

Zuerst zu diesem Problem konfrontiert war ich.

Wir haben zwei Dateien

1) ist aps_development.cer von Apfel 2) Ein weiteres 1 ist aus der keychain access mit dem gemeinsamen Namen, die wir gerade erstellt haben.

Danach, beide konvertieren es in .pem Dateien. B. cert.pem und key.pem. Danach kombiniert diese zwei Dateien unter Befehl

cat cert.pem key.pem > ck.pem 

Zuerst unter Befehl I OpenSSL.

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

Welche gibt mir den Fehler zurück, den Sie erwähnten. Danach versuche ich schon

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

Dann seine Arbeits verwenden. Hoffe das hilft.

+4

ich die gleichen Dinge tat, aber das Problem ist immer noch da Irgendwelche Vorschläge mehr thx – sailing

+0

ich.? versuchte den Vorschlag Lösung aber der Fehler ist immer noch da. Irgendwelche anderen Vorschläge? –

6

ich das gleiche Problem konfrontiert war, während ich eine PEM-Datei für Unternehmens-Distribution zu erzeugen, aber ich dachte später, dass ich gegen die iPhone Schlüsselverteilungszertifikat eine p12-Datei generiert aus, obwohl ich das p12 erzeugt hatte sollte gegen Apple-Produktion iOS Push Servies Schlüssel. Ich hoffe, dies kann das Problem beheben, wenn jemand den Verteilungsschlüssel verwendet hat.

2

Hallo folgen Sie bitte folgenden Befehle. schritt1 openssl pkcs12 -clcerts -nokeys -out developer_key.pem -in developer_key.p12

Hinweis: Ziehen Sie einfach den Dateipfad auf Terminal ...

schritt2 Openssl pkcs12 -nocerts -out apns_key.pem -in apns_key.p12

step3 Openssl pkcs12 -in developer_key.p12 -out developer_key.pem -nodes -clcerts

step4 Openssl pkcs12 -in apns_key.p12 -out apns_key.pem -nodes -clcerts

Schritt 5 Katze apns_key.pem developer_ket.pem> developer.pem

den gleichen Schritt für die Verteilung Zertifikate DO

Nach dem Erstellen developer.pem und distribution.pem

beide Datei überprüfen Bitte um unter Befehlen.

Step6 Openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert developer.pem -debug -showcerts -CAfile „Entrust.net.Certification Authority (2048) .PEM

2

A Hinweis . ist Passphrase muss länger als 3 Zeichen

ich habe mit Passphrase nur fixiert ist : D

Verwandte Themen