সার্ভার শংসাপত্র যাচাইকরণ ব্যর্থ হয়েছে। CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: কিছুই নয় none


334

আমি এসএসএস ব্যবহার করে ক্লোন প্রকল্প দ্বারা ধাক্কা দিতে পারি, তবে আমি যখন https- র সাথে প্রকল্পটি ক্লোন করি তখন তা কার্যকর হয় না।

ত্রুটি বার্তা যা আমাকে দেখায় তা হ'ল:

server certificate verification failed. CAfile: /etc/ssl/certs/cacertificates.crt CRLfile: none

উত্তর:


422

TLDR:

hostname=XXX
port=443
trust_cert_file_location=`curl-config --ca`

sudo bash -c "echo -n | openssl s_client -showcerts -connect $hostname:$port -servername $hostname \
    2>/dev/null  | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'  \
    >> $trust_cert_file_location"

দীর্ঘ উত্তর

এর মূল কারণটি হ'ল আপনার কম্পিউটার সেই শংসাপত্র কর্তৃপক্ষকে বিশ্বাস করে না যা গিটল্যাব সার্ভারে ব্যবহৃত শংসাপত্রটিতে স্বাক্ষর করে । এর অর্থ এই নয় যে শংসাপত্রটি সন্দেহজনক, তবে এটি স্ব-স্বাক্ষরিত বা কোনও সংস্থা / সংস্থার দ্বারা স্বাক্ষরিত হতে পারে যা আপনার ওএসের সিএ তালিকার তালিকায় নেই। সমস্যাটি সমাধান করার জন্য আপনাকে যা করতে হবেআপনার কম্পিউটারে তা সেই শংসাপত্রটির উপর আস্থা রাখতে বলছে - যদি আপনার এ সম্পর্কে সন্দেহজনক হওয়ার কোনও কারণ না থাকে।

আপনার গিটল্যাব সার্ভারের জন্য ব্যবহৃত ওয়েব শংসাপত্রটি পরীক্ষা করতে হবে এবং এটিতে আপনার যুক্ত করতে হবে </git_installation_folder>/bin/curl-ca-bundle.crt

কমপক্ষে ক্লোনটি বলেছেন শংসাপত্রটি যাচাই না করে কাজ করে কিনা তা পরীক্ষা করতে আপনি সেট করতে পারেন:

export GIT_SSL_NO_VERIFY=1
#or
git config --global http.sslverify false

তবে এটি কেবল পরীক্ষার জন্যই হবে, যেমন " ব্রাউজার, উইজেট এবং কার্ল নিয়ে এসএসএল কাজ করে তবে গিট দিয়ে ব্যর্থ হয় " বা এই ব্লগ পোস্টে

আপনার গিটল্যাব সেটিংস পরীক্ষা করুন, এটি ইস্যুতে 4272


এই শংসাপত্রটি পেতে (যে আপনার curl-ca-bundle.crtফাইলটিতে আপনাকে যুক্ত করতে হবে), টাইপ করুন:

echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGitlabPort \
  2>/dev/null  | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p'

(' yourserver.com' আপনার গিটল্যাব সার্ভারের নাম হওয়ার সাথে এবং YourHttpsGitlabPortসাধারণত https পোর্ট হয় 443)

সিএ (শংসাপত্র কর্তৃপক্ষ জারিকারী) পরীক্ষা করতে, টাইপ করুন:

echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpsGilabPort \
  2>/dev/null  | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' \
  | openssl x509 -noout -text | grep "CA Issuers" | head -1

দ্রষ্টব্য: ওয়ালারি ক্যাটকভ ওপেনসেল কমান্ডের বিকল্প যুক্ত করার জন্য মন্তব্যে পরামর্শ দিয়েছেন -servername, অন্যথায় কমান্ডটি ভ্যালেরির ক্ষেত্রে www.github.com এর জন্য শংসাপত্র দেখায় নি।

openssl s_client -showcerts -servername www.github.com -connect www.github.com:443

Findekano যোগ মন্তব্য :

এর অবস্থান সনাক্ত করতে curl-ca-bundle.crt, আপনি কমান্ডটি ব্যবহার করতে পারেন

curl-config --ca

এছাড়াও, আমার আরও সাম্প্রতিক উত্তর " গিথুব: সার্ভার শংসাপত্র যাচাইকরণ ব্যর্থ হয়েছে " দেখুন: আপনাকে এই শংসাপত্রগুলি পুনরায় ইনস্টল করতে হবে:

sudo apt-get install --reinstall ca-certificates
sudo mkdir /usr/local/share/ca-certificates/cacert.org
sudo wget -P /usr/local/share/ca-certificates/cacert.org http://www.cacert.org/certs/root.crt http://www.cacert.org/certs/class3.crt
sudo update-ca-certificates
git config --global http.sslCAinfo /etc/ssl/certs/ca-certificates.crt

8
মূল বার্তাটি শংসাপত্রটি কোথায় যুক্ত করবেন তা নির্দেশ করে না? আমার ক্ষেত্রে curl-config --caফিরে এসেছে /etc/ssl/certs/ca-certificates.crt, যেখানে আমাকে শংসাপত্র যুক্ত করতে হয়েছিল। তা ছাড়া এই
উত্তরটিই

1
আপনি গিট ইনস্টল ফোল্ডারটি কীভাবে খুঁজে পাবেন?
ভড়গব

1
@ ভারগাভ এটি আপনার ওএসের উপর নির্ভর করে। লিনাক্স এ, আপনি একটি করতে পারেন which git
ভনসি

3
আমি দৌড়ে গেলাম curl-config --ca, কিন্তু কিছুই ফেরেনি।
ফার্নান্দো কস্তা

1
টিপটির জন্য ধন্যবাদ - আপনি আমার দিনটি বাঁচিয়েছিলেন।
জান্নে

219

নোট: এই আছে প্রধান নিরাপত্তা প্রভাব।

আপনার টার্মিনালটি খুলুন এবং নিম্নলিখিত আদেশটি চালান:

export GIT_SSL_NO_VERIFY=1

এটি আমার পক্ষে কাজ করে এবং আমি লিনাক্স সিস্টেমটি ব্যবহার করি।


60
ডাউনভোটিং নয় কারণ যখন আপনি জানেন যে আপনি কী করছেন for তবে সাধারণ ক্ষেত্রে এর বিরুদ্ধে দৃ strongly়তার সাথে সুপারিশ করুন।
ট্রিপলি

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

1
উপরের পতাকা রফতানি করে আমি ত্রুটি নীচে পেয়েছি rorআরর: আরপিসি ব্যর্থ হয়েছে; ফলাফল = 22, HTTP কোড = 403 মারাত্মক: দূরবর্তী প্রান্তটি অপ্রত্যাশিতভাবে ত্রুটিযুক্ত হয়েছে: আরপিসি ব্যর্থ হয়েছে; ফলাফল = 22, এইচটিটিপি কোড = 403 মারাত্মক: দূরবর্তী
প্রান্তটি

7
কেবল আমার সাথেই কাজ করেছেনgit config --global http.sslverify false
ডিনিই

2
গ্রেট। তুমি আমার সময় বাঁচিয়েছ
সায়া প্রটেক

146

এই সমস্যার আর একটি কারণ হতে পারে যে আপনার ঘড়িটি বন্ধ হতে পারে। শংসাপত্রগুলি সময় সংবেদনশীল।

বর্তমান সিস্টেম সময় পরীক্ষা করতে:

date -R

আপনি বিশ্বব্যাপী এনটিপি পুল থেকে বিশ্বস্ত ইন্টারনেট টাইমসার্সের সাথে সিস্টেমের সময় স্বয়ংক্রিয়ভাবে সিঙ্ক করতে এনটিপি ইনস্টল করার বিষয়ে বিবেচনা করতে পারেন । উদাহরণস্বরূপ, ডেবিয়ান / উবুন্টুতে ইনস্টল করতে:

apt-get install ntp

5
এটা আমার সমস্যা ছিল। আমার বিশ্ববিদ্যালয় এনটিপি প্যাকেটগুলি ব্লক করছিল যা আমার সিস্টেমকে সময় আপডেট হতে আটকাচ্ছিল। একবার যখন আমি বিশ্ববিদ্যালয়টি এনটিপি সার্ভারগুলি কনফিগার করেছিলাম তখন জিনিসগুলি আবার কাজ শুরু করে। এই টিপ জন্য ধন্যবাদ!
কাইল

3
এটিও আমার সমস্যার কারণ ছিল, আমি একটি এম্বেডড ডিভাইস ব্যবহার করছিলাম যার ভুল তারিখ ছিল!
শেরভিন ইমামি

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

1
@ কাতু এটি gitবলার অপেক্ষা রাখে না , এটি অন্তর্নিহিত এসএসএল এক্সচেঞ্জ। গিটটি এসএসএল সমর্থন দিয়ে নির্মিত।
ইভান

1
আমি এই 10000 বার উপভোগ করেছি .... এখন 6 ঘন্টা কেন এটি কাজ করে না তা সন্ধান করছিলাম ... সার্ভারটি 7 মিনিটেরও কম সময় বন্ধ ছিল এবং এই কৌশলটি করেছে ... ধন্যবাদ!
dGo

66

আপনি যদি কোনও ব্যক্তিগত নেটওয়ার্কের মধ্যে গিট সার্ভার ব্যবহার করেন এবং কোনও স্ব-স্বাক্ষরিত শংসাপত্র বা কোনও আইপি ঠিকানার মাধ্যমে শংসাপত্র ব্যবহার করছেন; আপনি এসএসএল চেকগুলি অক্ষম করতে গিট গ্লোবাল কনফিগারেশনটি কেবল ব্যবহার করতে পারেন:

git config --global http.sslverify "false"

43

একই সমস্যা ছিল। স্ব ইস্যু করা শংসাপত্র কর্তৃপক্ষের দ্বারা সৃষ্ট। / Usr / লোকাল / শেয়ার / সিএ-শংসাপত্র / এবং কল করে .pem ফাইল যুক্ত করে এটি সমাধান করুন

sudo update-ca-certificates

পিএস: ফোল্ডারে পেম ফাইল। / শেয়ার / সিএ- প্রমাণীকরণের অবশ্যই এক্সটেনশন .crt থাকতে হবে


2
লিনাক্স টাকশাল 16 তে একটি
কবজির

আপনি কি cert.pem বা cert.crt বা cert.pem.crt বলতে চান?
মূসা লিয়াও জিজেড

1
cert.pem এর নাম পরিবর্তন করে cert.pem.crt করা উচিত
নিকোলে রুবান

34

আপনার সিস্টেমের ঘড়িটি পরীক্ষা করুন,

$ date

এটি সঠিক না হলে শংসাপত্র চেক ব্যর্থ হবে। সিস্টেমের ঘড়িটি সংশোধন করতে,

$ apt-get install ntp

ঘড়িটি নিজেই সিঙ্ক্রোনাইজ করা উচিত।

শেষ পর্যন্ত আবার ক্লোন কমান্ড প্রবেশ করান।


1
হ্যাঁ! আমার ভার্চুয়ালবক্সে উবুন্টু দীর্ঘ সময়ের জন্য স্থগিত হওয়ার উদাহরণ রয়েছে। আমি যখন সাসপেন্ড করেছি তখন সিস্টেম ক্লকটি কোনও কারণে সিঙ্ক হয় নি। ভনসির উত্তরটি জ্ঞানজনক বলে মনে হচ্ছে, তবে আমি সত্যিই খুব খুশি যে আমাকে যে সুরক্ষা কমান্ড আমি বুঝতে পারি না তা চালাতে হয়নি। প্রথমে এটি পরীক্ষা করুন!
অ্যান্ডি জোস্ট

24
GIT_CURL_VERBOSE=1 git [clone|fetch]…

সমস্যাটি কোথায় তা আপনাকে জানাতে হবে। আমার ক্ষেত্রে এটি এনএসএসের বিরুদ্ধে নির্মিত যখন পিআরএম শংসাপত্রগুলিকে সমর্থন না করায় সিআরএল, সেই সমর্থনটি এনএসএসের মূললাইন না হওয়ার কারণে ছিল ( # 726116 # 804215 # 402712 এবং আরও )।


4
সঙ্গে ভাল সংযোজন GIT_CURL_VERBOSE। আমি আমার উত্তরে এটি উল্লেখ করিনি। +1
ভনসি

18

অথবা আপনার ডাটাবেসে সার্ভার শংসাপত্র যুক্ত করতে কেবল এই মন্তব্যটি চালান:

echo $(echo -n | openssl s_client -showcerts -connect yourserver.com:YourHttpGilabPort 2>/dev/null  | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p') >> /etc/ssl/certs/ca-certificates.crt

তারপরে আবার গিট ক্লোন করুন।


1
আমি জানি না এটি কারও পক্ষে কাজ করে কিনা তবে শংসাপত্রের ফাইলটি মূল হিসাবে যুক্ত করতে আমার "টি" দরকার: ইকো-এন | openssl s_client-showcerts- কানেক্ট করুন yourerver.com:4:4 2> / দেব / নাল | sed -ne '/ -বিগেইন শংসাপত্র - /, / - শেষ শংসাপত্র- / পি' | sudo tee -a /etc/ssl/certs/ca-certificates.crt
ywu

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

10

আমি goagent প্রক্সি সেট আপ করার সময় আমার সিএ ফাইলগুলির সাথে গোলযোগ করেছি। গিথুব থেকে ডেটা টানতে পারে না এবং একই সতর্কতাটি পেতে পারে:

সার্ভার শংসাপত্র যাচাইকরণ ব্যর্থ হয়েছে। CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: কিছুই নয় none

ভনকের পদ্ধতিটি ব্যবহার করুন, গিথুব থেকে শংসাপত্র পান এবং /etc/ssl/certs/ca-cerર્ટates.crt এ রেখে দিন, সমস্যা সমাধান হয়েছে।

প্রতিধ্বনি-এন | ওপেনএসএল এস_ক্লিয়েন্ট -শোসার্টস-সংযোগ github.com:443 2> / দেব / নাল | সেড -ne '/ -বিগেইন শংসাপত্র - /, / - শেষ শংসাপত্র- / পি'


8

মিথ্যাতে সেট করতে গিট এসএসএল যাচাইকরণ সেট করার দরকার নেই। সিস্টেমে সমস্ত CA কর্তৃপক্ষের শংসাপত্র না থাকলে এটি ঘটে। বেশিরভাগ লোকেরা যাদের সত্যিকারের এসএসএল শংসাপত্র রয়েছে তারা অন্তর্বর্তী শংসাপত্রটি অনুপস্থিত।

কেবলমাত্র মধ্যবর্তী শংসাপত্রের সম্পূর্ণ পাঠ্য (নিখোঁজ সিএ এবং অন্তর্বর্তী শংসাপত্রের পুরো শৃঙ্খলা) যুক্ত করুন

sudo gedit /etc/ssl/certs/ca-certificates.crt 

চালানো ছাড়া কাজ করে update-ca-certificates

একই ম্যানুয়ালি উত্পন্ন শংসাপত্রগুলির জন্য যায়, কেবল সিএ শংসাপত্রের পাঠ্য যুক্ত করুন।

শেষে: পুশ সফল: সবকিছু আপ টু ডেট


1
সমস্ত এসএসএল সিএ চেইনের সাথে সার্ভারটি সঠিকভাবে কনফিগার করা না থাকলে একই কারণ হতে পারে।
abcdef12

চেইনের সমস্যাগুলি কারণ হতে পারে, যেমনটি abcdef12 মন্তব্য করেছে। গিট ১.৯.১-এর সাথে আমার এই সমস্যা ছিল - সার্ভারটি শংসাপত্রটি পাঠিয়েছিল: # 0 সার্ভার শংসাপত্র; # 1 সার্ভার শংসাপত্র (আবার); # 2 স্বাক্ষরকারী শংসাপত্র। চেইনের সদৃশটি গিটটি পছন্দ না করার কারণ ছিল।
জাহা

8

টার্মিনালে এই সমস্যাটি সমাধান করার জন্য আমি কী করেছি (উবুন্টু 18.04):

openssl s_client -showcerts -servername www.github.com -connect www.github.com:443

আমি সার্টিফিকেট খণ্ড দুটি অংশ পেয়েছি। এবং আমি আমার শংসাপত্র ফাইলটিতে শংসাপত্র খণ্ডগুলি অনুলিপি করেছি /etc/ssl/certs/ca-certificates.crt


এই সমাধানটি উবুন্টু 16.04-এ আমার অভিন্ন সমস্যা সমাধান করে।
ব্যবহারকারী 3072843

শংসাপত্র খণ্ডগুলির সাথে আপনার সঠিক অর্থ কী ? মধ্যে ব্লক ---BEGIN CERTIFICATE---এবং --- END CERTIFICATE ---?
বি - রিয়ান

3

আমি জুবুন্টুকে একটি রাস্পবেরি পাই 2 এ ইনস্টল করেছি, সময়ের সাথে একই সমস্যাটি খুঁজে পেয়েছি, যেমন এনটিপি এবং অটোমেটিক সার্ভার সিঙ্কটি বন্ধ ছিল (বা ইনস্টল করা হয়নি)। এনটিপি পান

sudo apt-get install ntp

এবং "ম্যানুয়াল" থেকে "ইন্টারনেট সার্ভারের সাথে সিঙ্ক্রোনাইজড রাখুন" তে "সময় এবং তারিখ" পরিবর্তন করুন


1

শেষ পর্যন্ত, আপনার .git / কনফিগারেশনে http.sslverify যুক্ত করুন।

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "origin"]
    url = https://server/user/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[http]
        sslVerify = false

1
কমান্ড লাইন ব্যবহার করা ভাল git config http.sslVerify false। @ রোমেন-ভিডিকে প্রস্তাবিত বিশ্বব্যাপী নয়, আপনি প্রতি-সংগ্রহের ভিত্তিতে গিট কনফিগারেশন সম্পাদনা করার পরামর্শ দিচ্ছেন?
অহোজেন

1

আপনার প্রথমে যা পরীক্ষা করা উচিত তা হ'ল ফাইল অনুমতি /etc/sslএবং /etc/ssl/certs

আমার শংসাপত্র কর্তৃপক্ষ পরিচালন সরঞ্জামে কাজ করার সময় গ্রুপ নাম / আইডি rm -rf /etc/ssl/*ব্যবহার ssl-certকরার সময় আমি ফাইলের অনুমতিগুলি (বা এসএসএল ডিরেক্টরিগুলি উড়িয়ে দেওয়ার) ভুল করেছি ।

সেই সময়ই আমি সঠিক একই ত্রুটি বার্তা লক্ষ্য wgetএবং curlCLI ব্রাউজার সরঞ্জাম:

server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none

আমি একবার ডিরেক্টরি /etc/sslএবং /etc/ssl/certডিরেক্টরিগুলির ফাইল অনুমতি নিয়ে এলাম o+rx-w, সেই সি এল এল ব্রাউজার সরঞ্জামগুলি কিছুটা সহজ শ্বাস নিতে শুরু করেছে:

mkdir -p /etc/ssl/certs
chmod u+rwx,go+rx /etc/ssl /etc/ssl/certs

আমাকে জাভা উপ-ডিরেক্টরি আবার তৈরি করতে হয়েছিল এবং বিশ্বস্ত সিএ শংসাপত্র ডিরেক্টরিগুলি পুনর্গঠন করতে হয়েছিল:

mkdir /etc/ssl/certs/java
chmod u+rwx,go+rx /etc/ssl/certs/java
update-ca-certificates

এবং উপকূলটি পরিষ্কার ছিল।


0

আমি একটি গিট সংগ্রহস্থল নিয়ে খুব একই সমস্যার মুখোমুখি হয়েছি যা সর্বদা আমার জন্য কাজ করে। সমস্যাটি হ'ল আমি এটি সর্বজনীন ওয়াইফাই অ্যাক্সেসের মাধ্যমে অ্যাক্সেস করেছি, যা প্রথম সংযোগের পরে বন্দী পোর্টালে পুনঃনির্দেশ করে (উদাহরণস্বরূপ বিজ্ঞাপনগুলি দেখানো এবং টস সহ সম্মত হওয়া)।


0

একটি .crt ফাইলে শংসাপত্র এবং বান্ডিলটি অনুলিপি করুন এবং নিশ্চিত করুন যে ফাইলটিতে শংসাপত্রগুলির মধ্যে ফাঁকা রেখা আছে।

এটি ইন্টারনেটে সবকিছু চেষ্টা করার পরে একটি গিটল্যাব সার্ভারে আমার পক্ষে কাজ করেছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.