cURL त्रुटि 60: एसएसएल प्रमाणपत्र: स्थानीय जारीकर्ता प्रमाण पत्र प्राप्त करने में असमर्थ


232

मैं एक स्थानीय विकास पर्यावरण पर WAMP का उपयोग करता हूं और क्रेडिट कार्ड से शुल्क लेने की कोशिश कर रहा हूं, लेकिन त्रुटि संदेश मिलता है:

cURL त्रुटि 60: एसएसएल प्रमाणपत्र समस्या: स्थानीय जारीकर्ता प्रमाण पत्र प्राप्त करने में असमर्थ

मैंने Google पर बहुत कुछ खोजा और बहुत से लोग सुझाव दे रहे हैं कि मैं इस फ़ाइल को डाउनलोड करता हूं: cacert.pem , इसे कहीं रख दें और इसे मेरे php.ini में संदर्भित करें। यह मेरे php.ini में हिस्सा है:

curl.cainfo = "C:\Windows\cacert.pem"

फिर भी, कई बार अपने सर्वर को पुनरारंभ करने और पथ बदलने के बाद भी, मुझे वही त्रुटि संदेश मिलता है।

मैं अपाचे मॉड्यूल से WAMP का उपयोग करता हूं और ssl_module सक्षम है। और PGP एक्सटेंशन से मेरे पास php_curl सक्षम है।

अभी भी वही त्रुटि संदेश। ऐसा क्यों हो रहा है?

अब मैं इस फिक्स का पालन कर रहा हूं: PHP CURL Error 60 SSL को कैसे ठीक करें

इससे पता चलता है कि मैं इन लाइनों को अपने cURL विकल्पों में जोड़ता हूं:

curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem');
curl_setopt($process, CURLOPT_SSL_VERIFYPEER, true);

मैं अपने CURL में विकल्प कहां जोड़ूं? जाहिर है कि कमांड लाइन के माध्यम से नहीं, क्योंकि मेरे सीएलआई को "curl_setopt" कमांड नहीं मिलती है

संपादित करें

यह वह कोड है जो मैं चला रहा हूं:

public function chargeStripe()
{
    $stripe = new Stripe;
    $stripe = Stripe::make(env('STRIPE_PUBLIC_KEY'));

    $charge = $stripe->charges()->create([
        'amount'   => 2900,
        'customer' => Input::get('stripeEmail'),
        'currency' => 'EUR',
    ]);

    dd($charge);

    // echo $charge[Input::get('stripeToken')];


    return Redirect::route('step1');
}

यह मानते हुए कि आपके कोड के साथ कोई समस्या नहीं है, यह आपका फ़ायरवॉल हो सकता है। परीक्षण करने के लिए अपने फ़ायरवॉल को अक्षम करने का प्रयास करें।
वकार उल

क्या मैंने आपको यहाँ इस प्रश्न का उत्तर नहीं दिया ? :)
लिमोन मोंटे

@limonte संभव है, परियोजनाओं को स्विच करना पड़ा और शायद नई परियोजना के साथ भी यही समस्या है। गुज़ल समस्या पर वापस आ जाएगा और शायद यह वही तय है। BRB
Loveandhappiness

1
क्या आपने धारी के नवीनतम संस्करण की कोशिश की है? मुझे एक प्रतिबद्ध संदेश दिखाई देता है, जिसमें कुछ बदलाव आया है, जो कि
जीरो के

1
@LoveAndHappiness क्या आपको इस समस्या का हल मिल गया है? मैं स्ट्रिप के साथ एक ही त्रुटि का सामना कर रहा हूं। यदि आपके पास कोई समाधान है तो कृपया मुझे बताएं।
देव

जवाबों:


515

XAMPP का उपयोग करके विंडोज पर अपना काम कर रहे समाधान:

XAMPP सर्वर

  1. अन्य पर्यावरण के लिए भी ऐसा ही है
    • डाउनलोड करें और यहाँ cacert.pem के लिए निकालें (एक साफ फ़ाइल प्रारूप / डेटा)

https://curl.haxx.se/docs/caextract.html

  1. इसे यहाँ निम्नलिखित निर्देशिका में रखें।

C: \ XAMPP \ php \ एक्स्ट्रा कलाकार \ ssl \ cacert.pem

  1. अपने php.ini में इस खंड को इस खंड में डालें ("c: \ xampp \ php \ php.ini"):
;;;;;;;;;;;;;;;;;;;;
; php.ini Options  ;
;;;;;;;;;;;;;;;;;;;;

curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"
  1. अपने वेबसर्वर / अपाचे को पुनरारंभ करें

  2. समस्या सुलझ गयी!

(संदर्भ: https://laracasts.com/discuss/channels/general-discussion/curl-error-60-ssl-certificate-problem-unable-to-get-local-issuer-certificate )


6
यह संदेश आपके PHP संस्करण के कारण आ रहा है। अगर यह PHP 5.5 से ऊपरी है तो PHP 5.6 नई सुविधा के कारण यह त्रुटि आ रही है। अगर आप cURL का उपयोग कर रहे हैं तो PHP 5.6 प्रमाणपत्रों की जाँच करें।
UWU_SANDUN

9
जवाब के लिए धन्यवाद! हालांकि मैं आधिकारिक कर्ल-पृष्ठ से cacert.pem का उपयोग करने की सलाह दूंगा: curl.haxx.se/docs/caextract.html
dieBeiden

6
बस किसी को भी इंगित करना चाहता था जो इसे काम नहीं कर सकता है - मैंने आगे की स्लैश का उपयोग किया curl.cainfo = "C:/cacert.pem"और इसे काम करने के लिए अपने कंप्यूटर को पुनरारंभ करना पड़ा। बस वेब सर्वर को पुनरारंभ करना पर्याप्त नहीं था। उम्मीद है कि मदद करता है:]
space_food_


एक जादू की तरह काम किया! धन्यवाद
जैक

55

ध्यान दें Wamp / Wordpress / windows उपयोगकर्ता। मेरे पास यह मुद्दा घंटों था और यहां तक ​​कि सही उत्तर भी मेरे लिए नहीं कर रहा था, क्योंकि मैं गलत php.ini फ़ाइल को संपादित कर रहा था, क्योंकि प्रश्न का उत्तर XAMPP के लिए दिया गया था और WAMP उपयोगकर्ताओं के लिए नहीं, हालांकि प्रश्न WAMP के लिए था।

यहाँ मैंने क्या किया

सर्टिफिकेट बंडल डाउनलोड करें

के अंदर रखो C:\wamp64\bin\php\your php version\extras\ssl

सुनिश्चित करें कि फ़ाइल mod_ssl.soअंदर हैC:\wamp64\bin\apache\apache(version)\modules

सक्षम mod_sslमें httpd.confअपाचे निर्देशिका के अंदरC:\wamp64\bin\apache\apache2.4.27\conf

सक्षम php_openssl.dllमें php.ini। मेरी समस्या यह थी कि मेरे पास दो php.ini फाइलें थीं और मुझे उन दोनों में यह करने की आवश्यकता थी। सबसे पहले यहां आपके WAMP टास्कबार आइकन के अंदर स्थित किया जा सकता है।

यहां छवि विवरण दर्ज करें

और दूसरे में स्थित है C:\wamp64\bin\php\php(Version)

दोनों php.iniफ़ाइलों के लिए स्थान ढूंढें और लाइन ढूंढें curl.cainfo =और इसे इस तरह से एक पथ दें

curl.cainfo = "C:\wamp64\bin\php\php(Version)\extras\ssl\cacert.pem"

अब फ़ाइलों को सहेजें और अपने सर्वर को पुनरारंभ करें और आपको जाने के लिए अच्छा होना चाहिए


यह कम है कि आपको php.ini दोनों का उपयोग करना है, जिसे आप उपयोग करने का इरादा कर रहे हैं: यदि आप SAPI क्लाइंट के रूप में अपाचे का उपयोग कर रहे हैं, तो Apache dir में एक को संशोधित करें, और / या क्लाइंट में एक को संशोधित करें। dir अगर आप SAPI के रूप में php.exe का उपयोग करने की योजना बना रहे हैं।
फेबिन हदादी

3
"मुझे उन दोनों में ऐसा करने की आवश्यकता है" प्रमुख नोट है। धन्यवाद
जारोस्लाव Klimčík

1
यह लारावेल 5.5 के लिए "गुझेलहेट्प / गज़ल" के साथ काम करता है: "^ 6.3"। वैम्प सर्वर 3.1.3। पीएचपी 7.1 *
दीपेश थापा

यह काम किया। धन्यवाद
user4906240


46

यदि आप Guzzle के साथ PHP 5.6 का उपयोग कर रहे हैं, तो Guzzle ने प्रमाणपत्रों के लिए PHP लाइब्रेरीज़ ऑटोडेक्ट का उपयोग करने के लिए स्विच किया है बजाय इसके कि प्रक्रिया ( रेफरी )। PHP यहाँ परिवर्तनों को रेखांकित करती है

यह पता लगाना कि PHP / Guzzle कहां प्रमाण पत्र की तलाश कर रहा है

आप डंप कर सकते हैं जहां PHP का उपयोग कर रहे हैं:

 var_dump(openssl_get_cert_locations());

एक प्रमाणपत्र बंडल प्राप्त करना

OS X परीक्षण के लिए, आप होमबॉव का उपयोग ओपनसिएल को स्थापित करने के लिए कर सकते हैं brew install opensslऔर फिर openssl.cafile=/usr/local/etc/openssl/cert.pemअपनी php.ini या Zend सर्वर सेटिंग्स (ओपनएसएसएल के तहत) में उपयोग कर सकते हैं ।

एक प्रमाणपत्र बंडल कर्ल / मोज़िला से कर्ल वेबसाइट पर भी उपलब्ध है: https://curl.haxx.se/docs/caextract.html

PHP कह रहा है जहाँ प्रमाण पत्र हैं

एक बार जब आपके पास एक बंडल होता है, तो इसे या तो उस स्थान पर रखें जहां PHP पहले से ही दिख रही है (जिसे आपने ऊपर पाया है) या openssl.cafilephp.ini में अपडेट करें । (आम तौर पर, /etc/php.iniया /etc/php/7.0/cli/php.iniया /etc/php/php.iniयूनिक्स पर।)


3
हाँ। कई लोगों को देखने के बाद, कई संस्करण संख्याओं द्वारा डाउनग्रेड करने के स्पष्ट रूप से गलत दृष्टिकोण का सुझाव देते हैं, यह सही दृष्टिकोण इम्हो के रूप में खड़ा है। मैंने कैफ़ाइल के बारे में दूसरों की सलाह का पालन किया था, लेकिन परीक्षण का साधन नहीं था कि यह अभी भी क्यों नहीं लोड हुआ। यह Opensl_get_cert_locations () फ़ंक्शन ने वास्तव में मेरी समस्या को पहचानने में काम किया। धन्यवाद!
वेब और फ्लो

1
प्रदान करने के लिए धन्यवाद openssl_get_cert_locations, इसने डिबगिंग को बहुत आसान बना दिया। ऐसा लगता है कि WAMP, कंसोल php की तुलना में Apache php के लिए अलग ini फ़ाइल का उपयोग करता है। मेरे मामले में, मुझे openssl.cafile="c:/_/cacert.pem"कंसोल-आधारित php के लिए जोड़ना था । पिछली बार, जब इसे अपाचे के माध्यम से उपयोग किया गया था, तो मुझे curl.cainfo="c:/_/cacert.pem"इसे काम करने की आवश्यकता थी ।
साइको brm

16

गुज़ले , जो कार्टालिस्ट / स्ट्राइप द्वारा उपयोग किया जाता है , एक सर्वर प्रमाणपत्र की जांच करने के लिए एक उचित प्रमाणपत्र संग्रह खोजने के लिए निम्न कार्य करेगा:

  1. जांचें कि openssl.cafileक्या आपके php.ini फ़ाइल में सेट है।
  2. जांचें कि curl.cainfoक्या आपके php.ini फ़ाइल में सेट है।
  3. देखें कि क्या /etc/pki/tls/certs/ca-bundle.crtमौजूद है (रेड हैट, सेंटोस, फेडोरा, सीए-सर्टिफिकेट पैकेज द्वारा प्रदान)
  4. देखें कि क्या /etc/ssl/certs/ca-certificates.crtमौजूद है (उबंटू, डेबियन, सीए-सर्टिफिकेट पैकेज द्वारा प्रदान किया गया)
  5. यदि /usr/local/share/certs/ca-root-nss.crtमौजूद है (FreeBSD, ca_root_nss पैकेज द्वारा प्रदान किया गया है) की जाँच करें
  6. जांचें कि क्या /usr/local/etc/openssl/cert.pem(OS X) होमब्रे द्वारा प्रदान किया गया है)
  7. अगर C:\windows\system32\curl-ca-bundle.crtमौजूद है तो जाँच करें (विंडोज़)
  8. अगर C:\windows\curl-ca-bundle.crtमौजूद है तो जाँच करें (विंडोज़)

आप यह सुनिश्चित करना चाहेंगे कि पहले दो सेटिंग्स के लिए मान एक सरल परीक्षण करके ठीक से परिभाषित किए गए हैं:

echo "openssl.cafile: ", ini_get('openssl.cafile'), "\n";
echo "curl.cainfo: ", ini_get('curl.cainfo'), "\n";

वैकल्पिक रूप से, फ़ाइल को # 7 या # 8 द्वारा इंगित स्थानों में लिखने का प्रयास करें।


13

यदि आप php.ini को बदलने में असमर्थ हैं, तो आप इस तरह कोड से cacert.pem फ़ाइल को भी इंगित कर सकते हैं:

$http = new GuzzleHttp\Client(['verify' => '/path/to/cacert.pem']);
$client = new Google_Client();
$client->setHttpClient($http);

8

मैंने var_dump(openssl_get_cert_locations()); die;किसी भी php स्क्रिप्ट में क्या उपयोग किया था , जिससे मुझे अपने स्थानीय php का उपयोग करने वाली चूक के बारे में जानकारी मिली:

array (size=8)
  'default_cert_file' => string 'c:/openssl-1.0.1c/ssl/cert.pem' (length=30)
  'default_cert_file_env' => string 'SSL_CERT_FILE' (length=13)
  'default_cert_dir' => string 'c:/openssl-1.0.1c/ssl/certs' (length=27)
  'default_cert_dir_env' => string 'SSL_CERT_DIR' (length=12)
  'default_private_dir' => string 'c:/openssl-1.0.1c/ssl/private' (length=29)
  'default_default_cert_area' => string 'c:/openssl-1.0.1c/ssl' (length=21)
  'ini_cafile' => string 'E:\xampp\php\extras\ssl\cacert.pem' (length=34)
  'ini_capath' => string '' (length=0)

जैसा कि आप देख सकते हैं, मैंने ini_cafile या ini विकल्प curl.cainfo सेट किया है। लेकिन मेरे मामले में, कर्ल "default_cert_file" का उपयोग करने की कोशिश करेगा जो मौजूद नहीं था।

मैंने https://curl.haxx.se/ca/cacert.pem से फ़ाइल को "default_cert_file" के लिए स्थान में कॉपी किया (c: /openssl-1.0.1c/ssl/cert.pem और मैं इसे प्राप्त करने में सक्षम था। काम करने के लिए।

मेरे लिए यही एकमात्र उपाय था।


मेरे पास समान समस्या है और मेरा स्थान कुछ इस तरह है c: /usr/local/ssl/cert.pem लेकिन यह स्थान मौजूद नहीं है, क्या आपको पता है कि यह क्या हो सकता है, आगे उसी परियोजना का उपयोग मैक मशीन पर मेरी कॉलुज द्वारा किया जा सकता है। इसका कारण हो सकता है, मैंने बाकी सब कोशिश की है, कि .ini फ़ाइल में प्रमाणित स्थान जोड़ रहा है, लेकिन यह काम नहीं करता है, ऐसा लगता है कि आपके समाधान को काम करना चाहिए क्योंकि यह समझ में आता है लेकिन उस स्थान को बदल नहीं सकता है और प्रमाण पत्र नहीं डाल सकता है वह स्थान जो मौजूद नहीं है।
अब्दुल मय्येद

आप फ़ोल्डर्स बनाने की कोशिश कर सकते हैं और अपने निर्दिष्ट पथ पर प्रमाण पत्र डाल सकते हैं?
जॉर्ज डोनव

7

मुझे यह समस्या एक दिन से बाहर दिखाई दे रही थी, जब एक गुज़ल (5) स्क्रिप्ट SSL पर होस्ट से कनेक्ट करने का प्रयास कर रही थी। ज़रूर, मैं गज़ल / कर्ल में बहुत विकल्प को अक्षम कर सकता हूं, लेकिन यह स्पष्ट रूप से जाने का सही तरीका नहीं है।

मैंने यहां और इसी तरह के धागों में सूचीबद्ध सभी चीजों की कोशिश की , फिर अंततः टर्मिनल के साथ टर्मिनल पर गया, उस डोमेन के खिलाफ परीक्षण करने के लिए जिसके साथ मैं कोशिश कर रहा था:

openssl s_client -connect example.com:443 

... और संकेत मिलने वाली पहली कुछ पंक्तियाँ:

CONNECTED(00000003)
depth=0 CN = example.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 CN = example.com
verify error:num=21:unable to verify the first certificate
verify return:1 

... जबकि अन्य गंतव्यों (जैसे: google.com, आदि) को आजमाते समय सब कुछ ठीक रहा।

इससे मुझे उस डोमेन से संपर्क करने के लिए प्रेरित किया गया जिसे मैं कनेक्ट करने की कोशिश कर रहा था, और वास्तव में, उन्हें THEIR END पर एक समस्या थी जो कि समाप्त हो गई थी। यह हल हो गया और मेरी स्क्रिप्ट वापस काम पर चली गई।

इसलिए ... यदि आप अपने बालों को बाहर निकाल रहे हैं, तो ओपनसिएल को एक शॉट दें और देखें कि आप जिस स्थान से कनेक्ट करने का प्रयास कर रहे हैं, वहां से प्रतिक्रिया के साथ कुछ भी हो। शायद यह मुद्दा कभी-कभी इतना 'स्थानीय' नहीं होता।


6

मुझे एक समाधान मिला जो मेरे लिए काम करता है। मैंने नवीनतम गज़ल से संस्करण ~ 4.0 तक डाउनग्रेड किया और यह काम किया।

कंपोज़र.जॉन में "गुझलेहट / गज़ल" जोड़ें: "~ 4.0"

आशा है कि यह किसी की मदद करता है


यह आपको किसी भी संस्करण 5/6 सुविधाओं का उपयोग करने से भी रोकेगा। इसके बजाय सिर्फ एक अराउंड एरे में असत्य को सत्यापित करने के लिए सेट करें (अनुरोध विधि का तीसरा पैराग्राफ): $ क्लाइंट-> रिक्वेस्ट ('GET', '/', ['वेरिफाई करें = = गलत]);
एस .. 16

3

सुनिश्चित करें कि आप php.iniफ़ाइल को सीधे अपने विंडो एक्सप्लोरर द्वारा खोलें । (मेरे मामले में:) C:\DevPrograms\wamp64\bin\php\php5.6.25

php.iniसिस्टम ट्रे में Wamp / Xamp आइकन के मेनू में शॉर्टकट का उपयोग न करें । यह शॉर्टकट इस मामले में काम नहीं करता है।

फिर उसे संपादित करें php.ini:

curl.cainfo ="C:/DevPrograms/wamp64/bin/php/cacert.pem" 

तथा

openssl.cafile="C:/DevPrograms/wamp64/bin/php/cacert.pem"

सहेजने के बाद php.iniआपको Wamp आइकन में "सभी सेवाएँ पुनरारंभ करें" या CMD को फिर से खोलने की आवश्यकता नहीं है।


2

आपने कोशिश की है..

curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);

यदि आप किसी विश्वसनीय स्रोत का उपभोग कर रहे हैं, तो आपको SSL प्रमाणपत्र सत्यापित करने की आवश्यकता नहीं है।


2

मैंने इस समस्या का पता लगाने के लिए बहुत समय बिताया।

मेरा PHP संस्करण 5.5 था और मुझे 5.6 में अपग्रेड करने की आवश्यकता थी।

संस्करणों में <5.6 Guzzle यह स्वयं cacert.pem फ़ाइल का उपयोग करेगा, लेकिन PHP के उच्चतर संस्करणों में यह सिस्टम cacert.pem फ़ाइल का उपयोग करेगा।

मैंने भी यहाँ से फ़ाइल https://curl.haxx.se/docs/caextract.html डाउनलोड की और इसे php.ini में सेट किया।

Guzzles StreamHandler.php फ़ाइल में पाया गया उत्तर https://github.com/guzzle/guzzle/blob/0773d442aa96baf19d7195f14ba6e9c2da11f8ed.src/Handler/StreamHandler.php#L437

        // PHP 5.6 or greater will find the system cert by default. When
        // < 5.6, use the Guzzle bundled cacert.

2

सभी उत्तर सही हैं ; लेकिन सबसे महत्वपूर्ण बात यह है कि आपको सही php.ini फ़ाइल ढूंढनी होगी। इस कमांड को cmd में चेक करें "php --ini" सही php.ini फाइल खोजने के लिए सही उत्तर नहीं है

यदि आप संपादित करते हैं

curl.cainfo ="PATH/cacert.pem"

और जाँच करें

var_dump(openssl_get_cert_locations()); 

तब curl.cainfo का मान होना चाहिए। यदि नहीं तो वह सही php.ini फ़ाइल नहीं है;

* मैं आपको wamp / bin या xxamp / bin या किसी भी सर्वर का उपयोग करने के लिए * .ini खोज करने की सलाह देता हूं और उन्हें एक-एक करके बदल देता हूं और जांचता हूं। *


1

मैंने लारवेल 4 php ढांचे के साथ बस इसी समस्या का अनुभव किया जो guzzlehttp/guzzleसंगीतकार पैकेज का उपयोग करता है । किसी कारण के लिए, mailgun के लिए एसएसएल प्रमाण पत्र ने अचानक सत्यापन करना बंद कर दिया और मुझे वही "त्रुटि 60" संदेश मिला।

यदि, मेरी तरह, आप किसी साझा होस्टिंग पर पहुँच के बिना हैं php.ini, तो अन्य समाधान संभव नहीं हैं। किसी भी स्थिति में, गुज़ल में इस ग्राहक का कोड है जो सबसे अधिक php.iniप्रभाव को कम करने की संभावना रखता है :

// vendor/guzzlehttp/guzzle/src/Client.php
    $settings = [
        'allow_redirects' => true,
        'exceptions'      => true,
        'decode_content'  => true,
        'verify'          => __DIR__ . '/cacert.pem'
    ];

यहाँ गज़ल अपनी आंतरिक cacert.pem फ़ाइल का उपयोग करने के लिए मजबूर करती है, जो कि शायद अब तक आउट ऑफ डेट है, बजाय इसके कि cURL के वातावरण द्वारा प्रदान की गई । इस लाइन को बदलना (लिनक्स पर कम से कम) गज़ल को cURL के डिफ़ॉल्ट SSL सत्यापन तर्क का उपयोग करने के लिए कॉन्फ़िगर करता है और मेरी समस्या को ठीक करता है:

        'verify'          => true

falseयदि आप अपने SSL कनेक्शन की सुरक्षा की परवाह नहीं करते हैं, तो आप इसे सेट भी कर सकते हैं , लेकिन यह एक अच्छा समाधान नहीं है।

चूंकि फाइलों vendorको छेड़छाड़ करने के लिए नहीं बनाया गया है, इसलिए उपयोग पर गुज़्ज़ल क्लाइंट को कॉन्फ़िगर करने के लिए एक बेहतर समाधान होगा , लेकिन लारवेल 4 में ऐसा करना बहुत मुश्किल था।

आशा है कि यह किसी और को डिबगिंग के कुछ घंटे बचाता है ...


1

यह एक किनारे का मामला हो सकता है, लेकिन मेरे मामले में समस्या क्लाइंट कॉन्फिडेंस (मैं पहले से curl.cainfoकॉन्फ़िगर किया गया था php.ini) नहीं था, बल्कि रिमोट सर्वर ठीक से कॉन्फ़िगर नहीं किया जा रहा था:

इसने श्रृंखला में किसी भी मध्यवर्ती सिरे को नहीं भेजा । Chrome का उपयोग करके साइट ब्राउज़ करने में कोई त्रुटि नहीं थी, लेकिन PHP के साथ मुझे निम्नलिखित त्रुटि मिली।

CURL त्रुटि 60

दूरस्थ वेबसर्वर कॉन्फ़िगरेशन में इंटरमीडिएट सेर्ट्स को शामिल करने के बाद यह काम किया।

आप अपने सर्वर के एसएसएल कॉन्फ़िगरेशन की जांच के लिए इस साइट का उपयोग कर सकते हैं:

https://whatsmychaincert.com/


1

जब मैं चलता 'var_dump(php_ini_loaded_file());' हूं तो मुझे यह आउटपुट मेरे पेज पर मिलता है 'C:\Development\bin\apache\apache2.4.33\bin\php.ini' (length=50)'

और अपनी प्रमाणित फ़ाइल को लोड करने के लिए मुझे इस रास्ते में php.ini को एडिट करना था 'C:\Development\bin\apache\apache2.4.33\bin\php.ini' और openssl.cafile="C:/Development/bin/php/php7.2.4/extras/ssl/cacert.pem"जहाँ मैंने डाउनलोड किया था और https://curl.haxx.se/docs/caextract.html से अपनी प्रमाणित फ़ाइल डाल दी थी

विंडोज 10 पर है, ड्रुपल 8, wamp और php7.2.4 का उपयोग कर


0

मेरे पास इस समस्या का एक उचित समाधान है, इस मुद्दे के मूल कारण को समझने और समझने की कोशिश करता है। यह समस्या तब आती है जब आपके सिस्टम के सर्टिफिकेट स्टोर में रूट सर्टिफिकेट का उपयोग करके दूरस्थ सर्वर ssl को सत्यापित नहीं किया जा सकता है या चेन सर्टिफिकेट के साथ रिमोट ssl स्थापित नहीं है। यदि आपके पास रूट ssh एक्सेस के साथ एक लिनक्स सिस्टम है, तो इस मामले में आप नीचे दिए गए कमांड के साथ अपने सर्टिफिकेट स्टोर को अपडेट करने का प्रयास कर सकते हैं:

update-ca-certificates

यदि फिर भी, यह काम नहीं करता है, तो आपको अपने सर्टिफिकेट स्टोर में रिमोट सर्वर के रूट और अंतरिम प्रमाणपत्र को जोड़ने की आवश्यकता है। आप रूट और इंटरमीडिएट सिरे डाउनलोड कर सकते हैं और उन्हें / usr / लोकल / शेयर / सीए-सर्टिफिकेट डायरेक्टरी में जोड़ सकते हैं और फिर कमांड चला सकते हैं update-ca-certificates। यह काम कर जाना चाहिए। इसी तरह खिड़कियों के लिए आप रूट और इंटरमीडिएट सर्टिफिकेट को जोड़ने का तरीका खोज सकते हैं।

जिस तरह से आप इस समस्या को हल कर सकते हैं वह है दूरस्थ सर्वर टीम को ssl प्रमाणपत्र को डोमेन रूट प्रमाणपत्र, मध्यवर्ती प्रमाणपत्र और रूट प्रमाणपत्र के बंडल के रूप में जोड़ने के लिए कहना।


-1

जैसा कि आप विंडोज का उपयोग कर रहे हैं, मुझे लगता है कि आपका पथ विभाजक '\' (और '/' लिनक्स पर) है। निरंतर का उपयोग करने का प्रयास करें DIRECTORY_SEPARATOR। आपका कोड अधिक पोर्टेबल होगा।

प्रयत्न:

curl_setopt($process, CURLOPT_CAINFO, dirname(__FILE__) . DIRECTORY_SEPARATOR . 'cacert.pem');

संपादित करें: और पूरा रास्ता लिखें। मेरे पास रिश्तेदार रास्तों के साथ कुछ मुद्दे थे (शायद कर्ल को अन्य आधार निर्देशिका से निष्पादित किया गया है?)


1
इससे कोई फर्क नहीं पड़ेगा, क्योंकि जब आप उस विशेष स्ट्राइप लाइब्रेरी का उपयोग करते हैं तो वास्तविक cURL सेटिंग्स आपके नियंत्रण से बाहर होती हैं।
जाकेन

-1

यदि आप WAMP का उपयोग करते हैं तो आपको Apache के लिए php.ini में सर्टिफिकेट लाइन को भी जोड़ना चाहिए (डिफ़ॉल्ट php.ini फ़ाइल के अलावा):

[curl]
curl.cainfo = C:\your_location\cacert.pem

php5.3 + के लिए काम करता है


हाँ! एपाचे और php संस्करण php.ini दोनों फाइलों को संपादित करने के लिए सावधान रहें। WAMP उपयोगकर्ताओं के लिए, यह उत्तर केवल मेरी समस्या को हल करने के लिए था: stackoverflow.com/questions/28858351/…
MavBzh
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.