2014-06-23 47 views
9

Bazı harici şirketlerin sağladığı hizmete bağlanarak Curl numaralı telefonu kullanarak veri toplamaya çalışıyorum. Kendileri, adrese ek olarak, bağlantıyı kurmak için gereken p12 sertifika dosyasını gönderdiler. Ben curl ile kullanmak çalışıyorum, ben hata aşağıdaki almakCurl - p12 sertifikasını kullanarak bağlanamıyor

:

#58: not supported file type 'P12' for certificate 

Şimdiye kadar kıvırın ve php-kıvırma güncellemeye çalıştık ettik. Hiçbirşey değişmedi.

Kodum:

... 
curl_setopt($ch, CURLOPT_SSLCERT, 'cert_path'); 
curl_setopt($ch, CURLOPT_SSLCERTTYPE, 'P12'); 
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'my_pass'); 
... 

Komik şey benim yerel makine (Linux Mint 16) çalışmaz iken bu kod, üretim ortamında çalışmasıdır.

cevap

19

Çözüm bulundu.

Bunu yapmanın en kolay yolu, .pem anahtarını ve sertifikayı .p12 dosyasından ayıklamaktır. (linux üzerinde test) Örneğin

:

openssl pkcs12 -in file.p12 -out file.key.pem -nocerts -nodes 
openssl pkcs12 -in file.p12 -out file.crt.pem -clcerts -nokeys 

geçerli dizinde anahtar/sertifika çifti yaratacaksınız.

Şimdi

, zaman kullanılır? pass.p12 dosyadan şifre

curl_setopt($ch, CURLOPT_SSLCERT, 'file.crt.pem'); 
curl_setopt($ch, CURLOPT_SSLKEY, 'file.key.pem'); 
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'pass'); 
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, 'pass'); 

.