2014-06-23 4 views
9

का उपयोग करके कनेक्ट नहीं कर सकता है। मैं कुछ बाहरी कंपनी प्रदान की गई सेवा से कनेक्ट होने पर Curl का उपयोग करके कुछ डेटा एकत्र करने का प्रयास कर रहा हूं। वे, स्वयं को संबोधित करने के अलावा, मुझे p12 प्रमाण पत्र फ़ाइल भेज दी गई है जो कनेक्शन को स्थापित करने के लिए आवश्यक है।कर्ल - पी 12 प्रमाणपत्र

जब मैं curl साथ इसका इस्तेमाल करने की कोशिश कर रहा हूँ, मैं त्रुटि निम्न हो:

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

अब तक मैं कर्ल और php-कर्ल को अद्यतन करने की कोशिश की है। कुछ नहीं बदला।

मेरे कोड:

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

मजेदार बात यह है कि इस कोड को अपने उत्पादन पर्यावरण पर काम करता है, जबकि यह अपने स्थानीय मशीन (लिनक्स टकसाल 16) पर काम नहीं करता है।

उत्तर

19

समाधान मिला।

ऐसा करने का सबसे आसान तरीका .pem कुंजी और प्रमाणपत्र .p12 फ़ाइल से निकालना है।

उदाहरण (linux पर परीक्षण) के लिए:

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

मौजूदा निर्देशिका में कुंजी/प्रमाणपत्र जोड़ी पैदा करेगा।

अब, यह उपयोग करने के लिए:

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

कहाँ pass.p12 फ़ाइल से पासवर्ड है।