2014-06-23 22 views
9

Ich versuche, einige Daten zu sammeln mit Curl, Verbindung zu Service, dass einige externe Unternehmen zur Verfügung gestellt. Sie, zusätzlich zur Adresse selbst, sendeten mir p12 Zertifikatsdatei, die erforderlich ist, um Verbindung herzustellen.Curl - kann nicht verbinden mit p12 Zertifikat

Wenn ich versuche es mit curl zu verwenden, bekomme ich folgende Fehlermeldung:

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

Bisher habe ich Curl und php-curl versucht, zu aktualisieren. Nichts hat sich geändert.

Mein Code:

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

Das lustige daran ist, dass dieser Code auf unserer Produktionsumgebung arbeitet, während es nicht auf meinem lokalen Rechner (Linux Mint 16) funktioniert.

Antwort

19

Die Lösung gefunden.

Der einfachste Weg, dies zu tun, ist .pem Schlüssel und Zertifikat aus .p12 Datei zu extrahieren.

Zum Beispiel (getestet auf linux):

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

Wird key/cert Paar in aktuellem Verzeichnis erstellen.

Nun, es zu benutzen:

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'); 

Wo pass das Passwort aus .p12 Datei.

Verwandte Themen