সিআরএল ত্রুটি 60: এসএসএল শংসাপত্র: স্থানীয় ইস্যুকারী শংসাপত্রটি পেতে ব্যর্থ


232

আমি স্থানীয় উন্নয়নের পরিবেশে ডাব্লুএইচএমপি ব্যবহার করি এবং ক্রেডিট কার্ড চার্জ করার চেষ্টা করছি তবে ত্রুটির বার্তাটি পেয়েছি:

সিআরএল ত্রুটি 60: এসএসএল শংসাপত্রের সমস্যা: স্থানীয় ইস্যুকারী শংসাপত্রটি পেতে ব্যর্থ

আমি গুগলে প্রচুর অনুসন্ধান করেছি এবং প্রচুর লোকজন পরামর্শ দিচ্ছেন যে আমি এই ফাইলটি ডাউনলোড করছি: cacert.pem , এটি কোথাও রেখেছি এবং এটি আমার php.ini তে উল্লেখ করেছি। এটি আমার php.ini এর অংশ:

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

তবুও, আমার সার্ভারটি বেশ কয়েকবার পুনরায় চালু করার পরে এবং পথটি পরিবর্তন করার পরেও আমি একই ত্রুটি বার্তাটি পেয়েছি।

আমি অ্যাপাচি মডিউলগুলি থেকে ডাব্লুএএমএপি ব্যবহার করি এবং এসএসএল_মডিউল সক্ষম করে রেখেছি। এবং পিজিপি এক্সটেনশনগুলি থেকে আমি php_curl সক্ষম করেছি।

এখনও একই ত্রুটি বার্তা। কেন এমন হচ্ছে?

এখন আমি এই ফিক্সটি অনুসরণ করছি: পিএইচপি সিআরএল ত্রুটি 60 এসএসএল কীভাবে ঠিক করবেন

যা প্রস্তাব দেয় যে আমি এই লাইনগুলি আমার সিআরএল বিকল্পগুলিতে যুক্ত করব:

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

আমি আমার সিআরএল-এ বিকল্পগুলি কোথায় যুক্ত করব? দৃশ্যত কমান্ড লাইনের মাধ্যমে নয়, যেহেতু আমার সিআইএল "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');
}

ধরে নিই যে আপনার কোডে কোনও সমস্যা নেই, এটি আপনার ফায়ারওয়াল হতে পারে। পরীক্ষা করার জন্য আপনার ফায়ারওয়ালটি অক্ষম করার চেষ্টা করুন।
ওয়াকার উল ইসলাম

আমি কি আপনাকে এই প্রশ্নের উত্তর এখানে দিয়েছি না ? :)
লিমন মন্টে

@ লমন্টে সম্ভব, প্রকল্পগুলি স্যুইচ করতে হয়েছিল এবং নতুন প্রকল্পে সম্ভবত একই সমস্যা ছিল। গুজল সমস্যার দিকে ফিরে যাবে এবং সম্ভবত এটি একই সমাধান। BRB
LoveAndHappiness

1
আপনি কি স্ট্রিপের সর্বশেষতম সংস্করণটি ব্যবহার করে দেখেছেন? আমি একটি প্রতিশ্রুতিবদ্ধ বার্তাটি দেখছি যা শংসাপত্রগুলির
থ্যালাসট্যাডো

1
@ লভএন্ড হ্যাপিনেস আপনি কি এই সমস্যার সমাধান পেয়েছেন? আমি স্ট্রিপ সহ একই ত্রুটির মুখোমুখি হয়েছি। আপনার কোনও সমাধান থাকলে দয়া করে আমাকে জানান।
দেব

উত্তর:


515

এক্সএএমপিপি ব্যবহার করে উইন্ডোজটিতে আপনার ধরে নেওয়া কার্যক্ষম সমাধান:

এক্সএএমপিপি সার্ভার

  1. অন্যান্য পরিবেশের জন্য একই
    • এখানে cacert.pem জন্য ডাউনলোড এবং নিষ্কাশন (একটি পরিষ্কার ফাইল ফর্ম্যাট / ডেটা)

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

  1. এটি এখানে নিম্নলিখিত ডিরেক্টরিতে রাখুন।

সি: \ XAMPP \ পিএইচপি \ অতিরিক্ত \ SSL \ cacert.pem

  1. আপনার php.ini এ এই বিভাগটিতে এই লাইনটি লিখুন ("সি: \ 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-cer ર્ટate-problem-unable-to-get-local-issuer-cerર્ટ ate )


6
আপনার পিএইচপি সংস্করণের কারণে এই বার্তাটি আসছে। যদি এটি পিএইচপি 5.5 থেকে উচ্চ হয় তবে এই ত্রুটিটি পিএইচপি 5.6 নতুন বৈশিষ্ট্যের কারণে আসবে। যদি আপনি সিআরএল ব্যবহার করেন তবে পিএইচপি 5.6 চেক শংসাপত্রগুলি।
UWU_SANDUN

9
উত্তর করার জন্য ধন্যবাদ! যদিও আমি অফিসিয়াল কার্ল-পৃষ্ঠা থেকে cacert.pem ব্যবহারের পরামর্শ দেব: curl.haxx.se/docs/caextract.html
dieBeiden

6
যে কেউ এটিকে কাজ করতে না curl.cainfo = "C:/cacert.pem"পারে তার জন্য কেবল এটিই নির্দেশ করতে চেয়েছিল - আমি ফরোয়ার্ড স্ল্যাশ ব্যবহার করেছি এবং এটি কাজ করার জন্য আমার কম্পিউটার পুনরায় চালু করতে হয়েছিল। ওয়েব সার্ভার পুনরায় আরম্ভ করা যথেষ্ট ছিল না। আশা করি এটি সাহায্য করে:]
স্পেস_ফুড_

1
এবং কোনও পরিস্থিতি curl.cainfo(ফেসপাম) ভুলে যাবেন না
এডমন্ড সুলজানোক

মোহন মত কাজ! ধন্যবাদ
জ্যাক

54

মনোযোগ ওয়্যাম্প / ওয়ার্ডপ্রেস / উইন্ডোজ ব্যবহারকারীগণ। আমার এই সমস্যাটি কয়েক ঘন্টা ছিল এবং এমনকি সঠিক উত্তরটিও আমার পক্ষে তা করা হয়নি, কারণ আমি ভুল পিএইচপি.এনইআই ফাইলটি সম্পাদনা করছিলাম কারণ প্রশ্নটি ডাব্লুএএমপি-র জন্য হলেও, এক্সএএমপিপি-র প্রশ্নের উত্তর দেওয়া হয়েছিল এবং ডাব্লুএএমএপি ব্যবহারকারীদের জন্য নয়।

এখানে আমি কি করেছি

শংসাপত্রের বান্ডিলটি ডাউনলোড করুন

এটি ভিতরে রাখুন 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 উভয়ই করা কম: আপনি যদি স্যাপিআই ক্লায়েন্ট হিসাবে অ্যাপাচি ব্যবহার করেন, তবে অ্যাপাচি দির মধ্যে একটি সংশোধন করুন, এবং / অথবা ক্লায়েন্টের মধ্যে একটি সংশোধন করুন স্যার আপনি যদি পিএইচপি.এক্সইকে এসপিআই হিসাবে ব্যবহার করার পরিকল্পনা করছেন।
ফাবিয়েন হাদাদাদি

3
"আমার দু'জনের মধ্যে এটি করা দরকার" হ'ল মূল নোট। আপনাকে ধন্যবাদ
Jaroslav Klimčík

1
এটি "গুজলহট্টপ্প / গুজল": "^ 6.3" দিয়ে লারাভেল 5.5 এর জন্য কাজ করে। ওয়্যাম্প সার্ভার ৩.১.৩। পিএইচপি 7.1 *
দীপেশ থাপা

এই ওয়ার্কড ধন্যবাদ
user4906240


46

আপনি যদি গুজলের সাথে পিএইচপি 5.6 ব্যবহার করছেন তবে গুজল পিএইচপি লাইব্রেরিগুলির শংসাপত্রের জন্য অটোডেট্যাক্ট প্রক্রিয়া ( রেফ ) না করে স্যুইচ করেছে । পিএইচপি এখানে পরিবর্তনের রূপরেখা দেয় ।

পিএইচপি / গুজল শংসাপত্রগুলি কোথায় খুঁজছেন তা সন্ধান করা

যেখানে পিএইচপি ব্যবহার করছে সেখানে ডাম্প করতে পারেন:

 var_dump(openssl_get_cert_locations());

একটি শংসাপত্র বান্ডেল পাচ্ছেন

ওএস এক্স পরীক্ষার জন্য, আপনি ওপেনএসএল ইনস্টল করতে হোমব্রিউ ব্যবহার করতে পারেন brew install opensslএবং তারপরে openssl.cafile=/usr/local/etc/openssl/cert.pemআপনার php.ini বা জেন্ডার সার্ভার সেটিংসে (ওপেনএসএসএল এর অধীনে) ব্যবহার করতে পারেন ।

কার্ল / মোজিলা থেকে কার্ল ওয়েবসাইটটিতে একটি শংসাপত্রের বান্ডেলও পাওয়া যায়: https://curl.haxx.se/docs/caextract.html

শংসাপত্রগুলি কোথায় রয়েছে তা পিএইচপি বলছি

আপনার একবার বান্ডিল হয়ে গেলে, পিএইচপি ইতিমধ্যে যেখানে খুঁজছেন সেখানে রাখুন (যা আপনি উপরে খুঁজে পেয়েছিলেন) বা openssl.cafilephp.ini এ আপডেট করুন । (সাধারণত, /etc/php.iniবা /etc/php/7.0/cli/php.iniবা /etc/php/php.iniইউনিক্স উপর।)


3
হ্যাঁ. বহু লোক দেখার পরেও একাধিক সংস্করণ সংখ্যা দ্বারা ডাউনগ্রেডের স্পষ্টতই ভুল পদ্ধতির পরামর্শ দেয়, এটি সঠিক পদ্ধতির হিসাবে দাঁড়িয়েছে imho। আমি ক্যাফিল সম্পর্কে অন্যের পরামর্শ অনুসরণ করেছি তবে কেন এটি এখনও লোড হয়নি তা পরীক্ষার কোনও মাধ্যম ছিল না। এই ওপেনস্ল_জেট_সেট_লোকেশন () ফাংশনটি আমার সমস্যা চিহ্নিত করার জন্য সত্যই কাজ করেছে। ধন্যবাদ!
ওয়েব এবং ফ্লো

1
প্রদানের জন্য আপনাকে ধন্যবাদ openssl_get_cert_locations, এটি ডিবাগিংকে আরও সহজ করে তুলেছে। দেখে মনে হচ্ছে ডাব্লুএএমপি কনসোল পিএইচপি-র চেয়ে অ্যাপাচি পিএইচপি-র জন্য আলাদা ইনআই ফাইল ব্যবহার করে। আমার ক্ষেত্রে, আমাকে openssl.cafile="c:/_/cacert.pem"কনসোল-ভিত্তিক পিএইচপি করতে হবে। গতবার, এটি অ্যাপাচের মাধ্যমে ব্যবহার করার সময়, আমার curl.cainfo="c:/_/cacert.pem"এটি কাজ করা দরকার।
psycho 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উপস্থিত কিনা তা পরীক্ষা করুন (ফ্রিবিএসডি; Ca_root_nss প্যাকেজ সরবরাহ করে)
  6. কিনা /usr/local/etc/openssl/cert.pem(ওএস এক্স; হোমব্রিউ দ্বারা সরবরাহিত) পরীক্ষা করুন
  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;কোনও পিএইচপি স্ক্রিপ্টে ছিল যা আমার স্থানীয় পিএইচপি ব্যবহার করছিল এমন ডিফল্ট সম্পর্কে তথ্য দেয়:

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 সেট করেছি। তবে আমার ক্ষেত্রে, কার্ল "ডিফল্ট_সেসার্ট_ফায়াল" ব্যবহার করার চেষ্টা করবে যা বিদ্যমান নেই।

আমি https://curl.haxx.se/ca/cacert.pem থেকে "ডিফল্ট_সেসার্ট_ফাইল" (সি: / ওপেনসেল ১.০.১.১ / এসএসএল / স্পার্ট.পিএম) এর জন্য অবস্থানে ফাইলটি অনুলিপি করেছি এবং আমি এটি পেতে সক্ষম হয়েছি কাজ করতে.

এটি ছিল আমার একমাত্র সমাধান।


আমার অনুরূপ সমস্যা আছে এবং আমার অবস্থানটি সি: /usr/local/ssl/cert.pem এর মতো কিছু তবে এই অবস্থানটি বিদ্যমান নেই, এটি কী হতে পারে তা আপনি করুন, আরও একই প্রকল্পটি ম্যাক মেশিনে আমার কোলাজ দ্বারা ব্যবহৃত হতে পারে এই কারণেই, আমি অন্য সব কিছু চেষ্টা করেছি, এটি .ini ফাইলে শংসাপত্রের অবস্থান যুক্ত করছে তবে এটি কাজ করে না, দেখে মনে হচ্ছে আপনার সমাধানটি কাজ করা উচিত যেমন এটি বোধগম্য হয় তবে সেই অবস্থানটি পরিবর্তন করতে পারে না এবং শংসাপত্র রাখতে পারে না অবস্থান নেই যা বিদ্যমান নেই।
আব্দুল মুইদ

আপনি একটি নির্দিষ্ট ফোল্ডার তৈরি করার চেষ্টা করতে পারেন এবং আপনার নির্দিষ্ট পথে শংসাপত্র রাখতে পারেন?
জর্জ ডনেভ

7

আমার এই সমস্যাটি একদিন নীল রঙের বাইরে উপস্থিত হয়েছিল, যখন কোনও গুজল (5) স্ক্রিপ্ট এসএসএল-এর মাধ্যমে কোনও হোস্টের সাথে সংযোগ স্থাপনের চেষ্টা করছে। অবশ্যই, আমি গুজল / কার্লে ভেরিফাই বিকল্পটি অক্ষম করতে পারি, তবে এটি পরিষ্কারভাবে যাওয়ার সঠিক উপায় নয়।

আমি এখানে এবং অনুরূপ থ্রেডে তালিকাভুক্ত সমস্ত কিছু চেষ্টা করেছি , তারপরে অবশেষে যে ডোমেনটির সাথে সংযোগ দেওয়ার চেষ্টা করছি তার বিরুদ্ধে পরীক্ষা করতে ওপেনসেল দিয়ে টার্মিনালে গিয়েছিলাম:

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, ইত্যাদি)

এটি আমাকে যে ডোমেনে সংযোগ দেওয়ার চেষ্টা করেছিলাম তার সাথে যোগাযোগ করতে অনুরোধ করেছিল এবং প্রকৃতপক্ষে, তাদের শেষের দিকে তাদের সমস্যা ছিল। এটি সমাধান করা হয়েছিল এবং আমার স্ক্রিপ্টটি আবার কাজ শুরু করে।

সুতরাং ... আপনি যদি নিজের চুলগুলি টানতে থাকেন তবে ওপেনসেলকে একটি শট দিন এবং দেখুন যে সংযোগের চেষ্টা করছেন তার অবস্থান থেকে প্রতিক্রিয়া সহ কিছু আছে কিনা see কখনও কখনও সমস্যাটি এত 'স্থানীয়' নয় isn't


6

আমি একটি সমাধান খুঁজে পেয়েছি যা আমার পক্ষে কাজ করেছিল। আমি সর্বশেষ গুজল থেকে সংস্করণ ~ 4.0 এ ডাউনগ্রেড করেছি এবং এটি কার্যকর হয়েছে।

সুরকারে

আশা করি এটি কাউকে সাহায্য করবে


এটি আপনাকে যে কোনও সংস্করণ 5/6 বৈশিষ্ট্য ব্যবহার করতে বাধা দেবে। পরিবর্তে কেবলমাত্র প্যারাম অ্যারে (অনুরোধ পদ্ধতির তৃতীয় প্যারাম) এ ভেরিফাই সেট করুন: $ ক্লায়েন্ট-> অনুরোধ ('জিইটি', '/', ['ভেরিফাই' => মিথ্যা]);
এস ..

3

নিশ্চিত হয়ে নিন যে আপনি php.iniফাইলটি আপনার উইন্ডো এক্সপ্লোরার দ্বারা সরাসরি খোলেন । (আমার ক্ষেত্রে C:\DevPrograms\wamp64\bin\php\php5.6.25:)।

php.iniসিস্টেম ট্রেতে ওয়্যাম্প / এক্সএম্প আইকনটির মেনুতে শর্টকাটটি ব্যবহার করবেন না । এই শর্টকাট এই ক্ষেত্রে কাজ করে না।

তারপরে এটি সম্পাদনা করুন php.ini:

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

এবং

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

সংরক্ষণের পরে php.iniআপনার ওয়্যাম্প আইকনে "সমস্ত পরিষেবা পুনরায় চালু করুন" বা সিএমডি বন্ধ / পুনরায় খুলতে হবে না।


2

আপনি চেষ্টা করেছেন ..

curl_setopt($process, CURLOPT_SSL_VERIFYPEER, false);

আপনি যদি কোনও বিশ্বস্ত উত্সটি তর্কযুক্তভাবে গ্রাস করে থাকেন তবে আপনাকে এসএসএল শংসাপত্রটি যাচাই করতে হবে না।


2

আমার জন্য এই সমস্যাটি বের করতে আমি খুব বেশি সময় ব্যয় করেছি।

আমার পিএইচপি সংস্করণ 5.5 ছিল এবং আমার 5.6 তে আপগ্রেড করা দরকার।

সংস্করণগুলিতে <5.6 গুজল এটি নিজস্ব cacert.pem ফাইলটি ব্যবহার করবে তবে পিএইচপি-র উচ্চতর সংস্করণগুলিতে এটি সিস্টেমের কেসারেট.পিএম ফাইল ব্যবহার করবে।

আমি এখান থেকে ফাইলটি ডাউনলোড করে https://curl.haxx.se/docs/caextract.html এবং এটিকে php.ini এ সেট করেছি।

গুজলস স্ট্রিমহ্যান্ডলিরফপি ফাইলের উত্তর https://github.com/guzzle/g झল/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 বা আপনি যে কোনও সার্ভার ব্যবহার করেন সেগুলিতে অনুসন্ধান করতে এবং একে একে একে পরিবর্তন করে এটি পরীক্ষা করার পরামর্শ দিচ্ছি। *


1

আমি কেবল একই সমস্যাটি লারভেল 4 পিএইচপি ফ্রেমওয়ার্কের সাথে অনুভব করেছি যা guzzlehttp/guzzleসুরকার প্যাকেজ ব্যবহার করে । কোনও কারণে, মেলগুনের জন্য এসএসএল শংসাপত্রটি হঠাৎ করে বৈধকরণ বন্ধ করে দিয়েছে এবং আমি একই "ত্রুটি 60" বার্তা পেয়েছি।

যদি আমার মতো আপনিও অ্যাক্সেস না করে একটি শেয়ার্ড হোস্টিংয়ে থাকেন php.iniতবে অন্যান্য সমাধানগুলি সম্ভব নয়। যাই হোক না কেন, গুজলের এই ক্লায়েন্টকে আরম্ভ করার কোড রয়েছে যা সম্ভবত php.iniপ্রভাবগুলি বাতিল করে দেবে :

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

এখানে গুজল সিআরএল এর পরিবেশ দ্বারা সরবরাহিত ফাইলটি ব্যবহার না করে তার নিজস্ব অভ্যন্তরীণ ক্যাসর্ট.পিএম ফাইল ব্যবহার করতে বাধ্য করে, যা সম্ভবত এখন পুরানো । এই লাইনটি পরিবর্তন করা (কমপক্ষে লিনাক্সে) গুজলকে সিআরএল-এর ডিফল্ট এসএসএল যাচাইয়ের যুক্তি ব্যবহার করার জন্য কনফিগার করেছে এবং আমার সমস্যাটিকে স্থির করেছে:

        'verify'          => true

আপনি falseযদি নিজের এসএসএল সংযোগের সুরক্ষার বিষয়ে চিন্তা না করেন তবে আপনি এটি সেটও করতে পারেন, তবে এটি কোনও ভাল সমাধান নয়।

যেহেতু ফাইলগুলিতে vendorহস্তক্ষেপ করা নয়, তাই গুজল ক্লায়েন্টকে ব্যবহারের জন্য কনফিগার করা আরও ভাল সমাধান হবে তবে লারাভেল 4- তে এটি করা খুব কঠিন ছিল too

আশা করি এটি অন্য কাউকে কয়েক ঘন্টা ডিবাগ করা বাঁচায় ...


1

এটি একটি প্রান্তের মামলা হতে পারে, তবে আমার ক্ষেত্রে সমস্যাটি ক্লায়েন্ট কনফের (আমি ইতিমধ্যে curl.cainfoকনফিগার করেছিলাম php.ini) নয়, বরং দূরবর্তী সার্ভারটি সঠিকভাবে কনফিগার করা হচ্ছে:

এটি চেইনে কোনও অন্তর্বর্তী শংসাপত্র প্রেরণ করেনি । ক্রোম ব্যবহার করে সাইট ব্রাউজ করতে কোনও ত্রুটি ছিল না, তবে পিএইচপি দিয়ে আমি নিম্নলিখিত ত্রুটি পেয়েছি।

সিআরএল ত্রুটি 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, মোড় এবং php7.2.4 ব্যবহার করে


0

আমার এই সমস্যার যথাযথ সমাধান আছে, চেষ্টা করুন এবং এই সমস্যার মূল কারণটি বুঝতে পারি। এই সমস্যাটি তখনই আসে যখন আপনার সিস্টেমের শংসাপত্রের স্টোরের মূল শংসাপত্রগুলি ব্যবহার করে দূরবর্তী সার্ভারগুলি এসএসএল যাচাই করা যায় না বা চেইন শংসাপত্রের সাথে দূরবর্তী এসএসএল ইনস্টল করা হয় না। আপনার যদি মূল ssh অ্যাক্সেস সহ একটি লিনাক্স সিস্টেম থাকে, তবে এই ক্ষেত্রে আপনি নীচের কমান্ড দিয়ে আপনার শংসাপত্রের স্টোরটি আপডেট করার চেষ্টা করতে পারেন:

update-ca-certificates

এখনও যদি এটি কাজ না করে তবে আপনার শংসাপত্রের দোকানে আপনাকে দূরবর্তী সার্ভারের রুট এবং অন্তর্বর্তীকালীন শংসাপত্র যুক্ত করতে হবে। আপনি রুট এবং ইন্টারমিডিয়েট শংসাপত্রগুলি ডাউনলোড করতে এবং সেগুলিকে / usr / লোকাল / শেয়ার / সিএ-সার্টিফিকেট ডিরেক্টরিতে যুক্ত করতে পারেন এবং তারপরে কমান্ড চালাতে পারেন update-ca-certificates। এই কৌতুক করতে হবে। একইভাবে উইন্ডোজগুলির জন্য আপনি কীভাবে রুট এবং মধ্যবর্তী সার্ট যুক্ত করবেন তা অনুসন্ধান করতে পারেন।

অন্য যেভাবে আপনি এই সমস্যার সমাধান করতে পারবেন তা হ'ল দূরবর্তী সার্ভার টিমকে ডোমেন রুট সার্ট, ইন্টারমিডিয়েট সার্ট এবং রুট সার্টের বান্ডিল হিসাবে এসএসএল শংসাপত্র যুক্ত করতে।


-1

আপনি উইন্ডোজ ব্যবহার করার সময়, আমি মনে করি আপনার পাথ বিভাজকটি '\' (এবং লিনাক্সে '/')। ধ্রুবক ব্যবহার করার চেষ্টা করুন DIRECTORY_SEPARATOR। আপনার কোডটি আরও পোর্টেবল হবে।

চেষ্টা করুন:

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

সম্পাদনা: এবং পুরো পথ লিখুন। আপেক্ষিক পাথ নিয়ে আমার কিছু সমস্যা ছিল (সম্ভবত কার্লটি অন্য বেস ডিরেক্টরি থেকে নির্বাহ করা হয়?)


1
এটি কোনও তাত্পর্যপূর্ণ করবে না, কারণ আপনি যখন সেই নির্দিষ্ট স্ট্রাইপ লাইব্রেরি ব্যবহার করেন তখন প্রকৃত সিআরএল সেটিংস আপনার নিয়ন্ত্রণের বাইরে থাকে।
জ্যাক

-1

আপনি যদি ডাব্লুএইএমপি ব্যবহার করেন তবে আপনাকে অ্যাপাচে (ডিফল্ট php.ini ফাইলের সাথেও) জন্য php.ini এ শংসাপত্র লাইন যুক্ত করা উচিত:

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

php5.3 + এর জন্য কাজ করে


হ্যাঁ! অ্যাপাচি এবং পিএইচপি সংস্করণ php.ini ফাইল উভয়ই সম্পাদনা করতে সাবধান হন। Wamp ব্যবহারকারীদের জন্য, এই উত্তর ছিল শুধু আমার সমস্যা সমাধানের জন্য: stackoverflow.com/questions/28858351/...
MavBzh
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.