2016-01-27 13 views
6

मैं एक नए पेपैल परीक्षण एंडपॉइंट के खिलाफ परीक्षण करने की कोशिश कर रहा हूं: https://tlstest.paypal.comपेपैल टीएलएस टेस्ट यूआरएल - PHP कर्ल एसएसएल प्रोटोकॉल त्रुटि

इस पृष्ठ के बहुत नीचे देखें: TLS 1.2 and HTTP/1.1 Upgrade Microsite (अपना सत्यापित करें ...)।

मैं PHP (5.3.28) और कर्ल उपयोग कर रहा हूँ (7.30.0 - OpenSSL/0.9.8y - libssh2/1.4.2) विंडोज सर्वर 2008 R2 पर और IIS 7.5:

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'https://tlstest.paypal.com'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_FAILONERROR, true); 
curl_setopt($ch, CURLOPT_SSLVERSION, 6); // CURL_SSLVERSION_TLSv1_2 
$result = curl_exec($ch); 
echo 'result = '.$result.'<br>'; 
echo 'errno = '.curl_errno($ch).'<br>'; 
echo 'error = '.curl_error($ch).'<br>'; 
curl_close($ch); 

मैं हूँ 'यह त्रुटि मिलती: Github - Unknown SSL protocol error जिनमें कोई व्यक्ति किसी का कहना है::

Openssl must be at 1.0.1 or higher for TLS 1.2.

यह सही है ..

35 Unknown SSL protocol error in connection to tlstest.paypal.com:443

मैं इस पाया?

मेरा PHP ओपनएसएसएल संस्करण पर है: OpenSSL/0.9.8y (phpinfo() से)।

आप OpenSSL 1.0.1 या उच्चतर की आवश्यकता TLS 1.2 उपयोग करने के लिए तो शायद हर सर्वर एक कम OpenSSL संस्करण (मुझे लगता है कि बहुत सी चीज़ें हैं अनुमान लगा रहा हूँ!) के साथ पीएचपी चल रहे हैं या किसी भी पेपैल एपीआई का उपयोग करने में असमर्थ होंगे करते हैं जल्द ही पेपैल आईपीएन।

मैं विंडोज़ पर अपना PHP ओपनएसएसएल संस्करण कैसे अपडेट करूं ..?

उत्तर

1

मेरे पास यह काम कर रहा है। ऐसा लगता है कि कम से कम OpenSSL/1.0.1i TLS 1.2 के लिए आवश्यक है।

मैंने अपने PHP संस्करण को 5.6.0 में अपग्रेड किया, जिसने OpenSSL को संस्करण 1.0.1 में अपग्रेड किया।

  1. उपयोग curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); प्रमाणपत्र सत्यापित करने में:

    मैं भी इन की जरूरत है। डिफ़ॉल्ट 0.कर्ल 7.10 के रूप में डिफ़ॉल्ट है।

  2. सहेजें cacert.pemhttp://curl.haxx.se/docs/caextract.html स्थानीय स्तर से (ग करने के लिए मेरे मामले में: \ प्रमाणपत्र), तो पीएचपी आरं है कि आप संदर्भ के लिए cacert.pemas shown here उपयोग कर रहे हैं अद्यतन करें। आईएनआई फ़ाइल का उपयोग करके आपको प्रत्येक कॉल में curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '\cacert.pem'); का उपयोग करना पड़ता है।
+0

PHP 5.6 में अपग्रेड करने के बाद, एसएसएल हैंडशेक स्वयं को एसएसएल संस्करण निर्दिष्ट किए बिना सफलतापूर्वक पूरा कर लिया? और क्या आपने अपना कर्ल संस्करण भी अपडेट किया है, या फिर भी यह 7.30 है? –

+0

मैंने एसएसएल संस्करण को छोड़ दिया है, इसलिए सुनिश्चित नहीं है कि यह इसके बिना काम करता है, जल्द ही कोशिश कर सकता है ... curl verson अब 7.36.0 है, जो PHP 5.6.0 के साथ आता है। –

संबंधित मुद्दे