PHP ile ssl sertifikası kullanarak Hata

5 Cevap php

Ben php için yeni ve ben bir sertifika yüklemeye çalışırken bu hatayı alıyorum

jameys-macbookpro41:~ user$ php -f ~/Sites/providerService.php

Uyarı: stream_socket_client (): Yerel sertifika zincir dosya `cert.pem 'kurulamıyor; Lütfen cafile / capath ayarları sertifika ayrıntıları ve hat 27 üzerinde / Users / jamey / Siteler / providerService.php verene içerdiğini kontrol edin

cert.pem php dosyasıyla aynı klasörde olduğunu. Dosya cert.pem Apple Anahtarlık aracında kuruldu

class pushNotifications {
...
     private $sslPem = 'cert.pem';
...
     function connectToAPNS(){
          $streamContext = stream_context_create();
          stream_context_set_option($streamContext, 'ssl', 
             'local_cert', $this->sslPem);

Herhangi bir yardım için teşekkür ederiz!

5 Cevap

Bu komut dosyası örnekte inç olduğunu dizin, gelen komut değil çalışan dizinde cert.pem dosyayı bulmak için çalışıyor, çünkü bir hata alıyorsanız, bu sizin kullanıcı dizini "~" dir.

Lütfen bu sınıf, ya da benzer bir şey değiştirmeyi deneyin:

class pushNotifications {
...
     private $sslPem = 'cert.pem';
...
     function connectToAPNS(){
          $streamContext = stream_context_create();
          stream_context_set_option($streamContext, 'ssl', 'local_cert', dirname(__FILE__) . '/' . $this->sslPem);

Ben de bu sorunu yaşıyorsanız, o nedense benim özel anahtar vardı aps_developer_identity.cer ile ilişkili bir maç olmadığını çıkıyor ...

I all benim o ben (istek oluşturuldu) tekrar tekrar tüm süreci başladı ... Ben programı yeni istek dosyasını teslim, anahtarlık öğeyi 'login' benim kamu ve özel anahtarları takas sona erdi portal ve indirilen yeni bir sertifika üretilir ve çift tıklatarak (developer_identity.cer) ile yüklü. Sonra, ben, yeni Basma SSL certs kullanmak için hazırlık profilleri sıfırlamak bu indirilen ve çift tıklama (aps_developer_identity.cer) ile onları yüklü. Son olarak, ben hazırlık profili sıfırlamak ve yeni bir tane indirdim. Ben Xcode Organizer eski bir temizlendi ve yeni bir tane yüklü. Son olarak, ben key.p12 ve apsdi.p12 olarak benim aps_developer_identity.cer olarak benim 'özel' tuşuna ihraç ve onlara karşı aşağıdaki komutları koştu:

openssl pkcs12 -clcerts -nokeys -out apsdi.pem -in apsdi.p12
openssl pkcs12 -nocerts -out key.pem -in key.p12

Tamam (üretim için önerilir) bir parola kullanıyorsanız:

cat apsdi.pem key.pem > cert.pem

Eğer bir 'boş' parolasını kullanmak isterseniz, ilk olarak Özel anahtarınızı unencrypt gerekir, using the password you specified when you converted it to pem format:

openssl rsa -in key.pem -out key.unencrypted.pem

Ve sonra kedi CERT ve şifresiz apns.pem içine tuşuna (ya da her türlü dosya, seçtiğiniz):

cat apsdi.pem key.unencrypted.pem > apns.pem

Bu sizin aps_developer_identity sertifika, apsdi.pem gibi not sizin developer_identity sertifikası vermek çok önemlidir.

* Eğer developer_identity.cer ve Anahtarlık Access aps_developer_identity.cer girişlerini genişletmek, ve ne zaman bir 'özel' tuşuna görürseniz, herşey çalışması gerekir. *

Tamamlayıcı bir ipucu olarak, herkes aynı sorunu olması için:. Apple'ın Anahtarlık erişimden özel anahtarı ihracat ve PEM dönüştürmek, bir şifre belirtin.

Nedense, bu ihracat biri böylece son. Pem tam değil, özel anahtarı kaldırır boş bir parola bırakarak görünüyor.

Daha sonra openssl kullanarak kaldırmak bile Yani, bir kukla şifre koymak.

Notes for the future (after having a big headache because of all of this): 1. if you get the handshake error - the pem file you created is probably wrong.

a. make sure the file is in the same directory as the php you are trying to run. b. export the certifcate p12 file AND the key under it in the keychain access utility.both of these files will be the SAME size, but they ARE different. c. do the above "openssl" commands in the macintosh terminal.

  1. Şu anda, ben yapabilirim çünkü tüm ck.pem için chmod 400, sudo gibi php çalıştırılır. bir şey vermek lazım ...

Sistem doğru çalıştığında btw, "kripto etkinleştirmek için başarısız" mesajı ortadan kalkacaktır.

Sadece Yarayacak www-veri sahibini değiştirmek :)

sudo chown www-data.www veri ck.pem

apache www-veri deafult kullanıcı