फ़ायरवॉल के पीछे HTTPS पर GitHub तक पहुंचने का प्रयास करते हुए SSL प्रमाणपत्र अस्वीकार कर दिया गयाgit


Answers

समस्या यह है कि आपके पास सिस्टम पर कोई प्रमाणन प्राधिकरण प्रमाणपत्र स्थापित नहीं है। और ये सिर्ट्स सिग्विन की सेटअप.एक्सए के साथ स्थापित नहीं की जा सकतीं।

अद्यतन: साइगविन में नेट / सीए-प्रमाणपत्र पैकेज इंस्टॉल करें (धन्यवाद डर्कजॉट)

दो समाधान हैं:

  1. SSL प्रमाणपत्र सत्यापन को अनदेखा करें

    चेतावनी: SSL प्रमाणपत्र सत्यापन अक्षम करने पर सुरक्षा प्रभाव पड़ता है SSL / HTTPS कनेक्शन की प्रामाणिकता के सत्यापन के बिना, एक दुर्भावनापूर्ण हमलावर एक विश्वसनीय समापन बिंदु (जैसे कि GitHub या कुछ अन्य रिमोट गेट होस्ट) का प्रतिरूपण कर सकता है, और आप मैन-इन-द-मध्य अटैक के लिए कमजोर होंगे। एक समाधान के रूप में इसका उपयोग करने से पहले सुनिश्चित करें कि आप सुरक्षा संबंधी मुद्दों और आपके खतरे के मॉडल को पूरी तरह से समझें।

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    
  2. असल में रूट प्रमाणपत्र इंस्टॉल करें कर्ल को मोज़िला से आपके प्रमाण पत्र के लिए निकाले गए

    cacert.pem फ़ाइल है जो आप के लिए देख रहे हैं। इस फ़ाइल में> 250 सीए सीरेट (पता नहीं कैसे इस पीपीएल की संख्या पर विश्वास करना है) आपको यह फाइल डाउनलोड करने की आवश्यकता है, इसे अलग-अलग प्रमाण पत्रों में विभाजित करने के लिए उन्हें / usr / ssl / certs (अपने कैपथ) में डालें और उन्हें सूचक दें।

    यहां है कि इसे कैसे करना है। साइगविन setup.exe के साथ curl स्थापित करें और openssl संकुल निष्पादित करें:

    $ cd /usr/ssl/certs
    $ curl http://curl.haxx.se/ca/cacert.pem |
      awk '{print > "cert" (1+n) ".pem"} /-----END CERTIFICATE-----/ {n++}'
    $ c_rehash

    महत्वपूर्ण : c_rehash का उपयोग करने के लिए आपको भी openssl-perl को स्थापित करना होगा

Question

मैं एक फ़ायरवॉल के पीछे फंस गया हूँ ताकि मेरे गीथहब रिपॉजिटरी का उपयोग करने के लिए HTTPS का इस्तेमाल किया जा सके। मैं Windows XP में साइगविन 1.7.7 का उपयोग कर रहा हूं।

मैंने रिमोट को https://username@github.com/username/ExcelANT.git सेट करने की कोशिश की है, लेकिन एक पासवर्ड के लिए संकेतों को https://username@github.com/username/ExcelANT.git , लेकिन मैंने इसे दर्ज करने के बाद कुछ भी नहीं किया है https://username:<password>github.com/username/ExcelANT.git और खुलने से खाली रेपो की क्लोनिंग करते हैं, लेकिन हर बार यह मुझे एक ही त्रुटि देता है

त्रुटि: SSL प्रमाणपत्र समस्या, सत्यापित करें कि CA प्रमाणपत्र ठीक है। विवरण:
त्रुटि: 140 9 0086: SSL दिनचर्या: SSL3_GET_SERVER_CERTIFICATE: https://github.com/username/Excelant.git/info/refs तक पहुंचने में प्रमाणपत्र विफल रहे

GIT_CURL_VERBOSE=1 चालू करना मुझे देता है

* के बारे में कनेक्ट करने के लिए () github.com बंदरगाह 443 (# 0)
* 207.97.227.239 की कोशिश कर रहा है ... * सफलतापूर्वक प्रमाणपत्र सत्यापित करें स्थानों को सेट करें:
* कैफाइल: कोई नहीं
कैपथ: / usr / ssl / certs
* SSL प्रमाणपत्र समस्या, सत्यापित करें कि CA cert ठीक है। विवरण:
त्रुटि: 140 9 0086: SSL दिनचर्या: SSL3_GET_SERVER_CERTIFICATE: प्रमाण पत्र सत्यापित करना विफल हुआ
* समाप्ति की समाप्ति
* कनेक्शन बंद करना # 0
* के बारे में कनेक्ट करने के लिए () github.com बंदरगाह 443 (# 0)
* 207.97.227.239 की कोशिश कर रहा है ... * सफलतापूर्वक प्रमाणपत्र सत्यापित करें स्थानों को सेट करें:
* कैफाइल: कोई नहीं
कैपथ: / usr / ssl / certs
* SSL प्रमाणपत्र समस्या, सत्यापित करें कि CA cert ठीक है। विवरण:
त्रुटि: 140 9 0086: SSL दिनचर्या: SSL3_GET_SERVER_CERTIFICATE: प्रमाण पत्र सत्यापित करना विफल हुआ
* समाप्ति की समाप्ति
* कनेक्शन बंद करना # 0
त्रुटि: SSL प्रमाणपत्र समस्या, सत्यापित करें कि CA प्रमाणपत्र ठीक है। विवरण:
त्रुटि: 140 9 0086: SSL दिनचर्या: SSL3_GET_SERVER_CERTIFICATE: https://github.com/username/Excelant.git/info/refs तक पहुंचने में प्रमाणपत्र विफल रहे

fatal: HTTP request failed

क्या यह मेरे फ़ायरवॉल, साइगविन या क्या है?

मैंने गिट कॉन्फ़िग में HTTP प्रॉक्सी सेट नहीं किया था, हालांकि यह एक ISA सर्वर है जिसकी NTLM प्रमाणीकरण की आवश्यकता होती है, मूलभूत नहीं है, इसलिए जब तक कि कोई भी एनटीएलएम का उपयोग करने के लिए git को बाध्य न करे, मैं स्कूपर्ड




मैं चाहता था कि Git को मेरे पूरे सिस्टम उपयोगों को बदलने के बिना अद्यतन प्रमाणपत्र बंडल का उपयोग करना चाहिए यहां बताया गया है कि कैसे गिट ने मेरी होम डायरेक्टरी में विशिष्ट फ़ाइल का उपयोग किया है:

mkdir ~/certs
curl http://curl.haxx.se/ca/cacert.pem -o ~/certs/cacert.pem

अब सहकर्मी सत्यापन के लिए इसका उपयोग करने के लिए .gitconfig अपडेट करें:

[http]
sslCAinfo = /home/radium/certs/cacert.pem

नोट मैं एक पूर्ण पथ का उपयोग कर रहा हूँ गिट यहां कोई पथ विस्तार नहीं करता है, इसलिए आप बिना किसी बदसूरत कल्ले का उपयोग नहीं कर सकते। वैकल्पिक रूप से, आप कॉन्फिग फ़ाइल को छोड़ सकते हैं और इसके बजाय पथ को पर्यावरण चर GIT_SSL_CAINFO माध्यम से सेट कर सकते हैं।

इसका निवारण करने के लिए, GIT_CURL_VERBOSE=1 सेट करें सीए फाइल गिट का उपयोग कर रहा है का पथ आउटपुट में "CAfile:" से शुरू होने वाली रेखाओं पर दिखाया जाएगा।




एक बहुत सरल समाधान: https: // को git: // के साथ बदलें

Git: //the.repository के बजाय https: //the.repository का प्रयोग करें और काम करेगा।

मैं विंडोज पर इस समस्या को TortoiseGit के साथ लिया है और यह हल।







CentOS 5.x पर, एक साधारण yum update openssl openssl पैकेज को अद्यतन करता है जो सिस्टम को ca-bundle.crt फ़ाइल को अपडेट करता है और मेरे लिए समस्या को ठीक करता है।

वही अन्य वितरणों के लिए भी सच हो सकता है




यदि आप मैक ओएस एक्स पर हैं, तो आप होम-ब्रू के जरिए सीए-सर्ट बंडल स्थापित कर सकते हैं:

$ brew install curl-ca-bundle
$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

सूत्र आपके बंटल के माध्यम से प्रमाणित बंडल स्थापित करता है:

share.install 'ca-bundle.crt'

share पद्धति /usr/local/share लिए सिर्फ एक उपनाम है, और मोड़ोला द्वारा कर्ल-सीए-बंडल प्रदान किया गया है। यह बहुत सी समस्याओं में संदर्भित किया जा रहा है। आशा है कि यह मदद करता है क्योंकि यह मैक ओएस एक्स। का उपयोग करने के तरीके के बारे में बहुत सीधा नहीं है। brew install curl को brew install curl करने के लिए आपको ज्यादा या तो नहीं मिलता है क्योंकि यह केवल केएग है और इसे लिंक नहीं किया जाएगा (चल रहा है which curl हमेशा आउटपुट /usr/bin/curl , जो डिफ़ॉल्ट है जो आपके ओएस के साथ जहाज़ है)। यह पोस्ट कुछ मूल्य का भी हो सकता है

इससे पहले कि आप homebrew स्थापित करने से पहले SSL को अक्षम करना होगा क्योंकि यह एक जीआईटी रेपो है सिर्फ यह बताएं कि जब SSL सत्यापन के दौरान त्रुटियां निकलती हैं और:

$ echo insecure >> ~/.curlrc

एक बार जब आप .curlrc को curl-ca-bundle के साथ स्थापित कर लेते हैं, तो हटा .curlrc और github पर रेपो आउट करने की कोशिश करें। सुनिश्चित करें कि कोई त्रुटियां नहीं हैं और आप जाने के लिए अच्छा होगा

नोट: यदि आप .curlrc सहारा .curlrc , तो कृपया इसे अपने सिस्टम से निकालें, जब आप परीक्षण पूरा कर लेंगे। यह फ़ाइल प्रमुख समस्याएं पैदा कर सकती है, अस्थायी उद्देश्यों के लिए और सावधानी के साथ इसका उपयोग करें brew doctor शिकायत करेंगे अगर आप इसे अपने सिस्टम से शुद्ध करना भूल जाते हैं)।

नोट: यदि आप अपने git के संस्करण को अपडेट करते हैं, तो आपको इस आदेश को फिर से चलाने की आवश्यकता होगी क्योंकि आपकी सिस्टम सेटिंग मिटा दी जाएगी (वे संस्करण के आधार पर जीआईटी बाइनरी के सापेक्ष संग्रहीत हैं)।

तो चलने के बाद:

$ brew update
$ brew upgrade

यदि आप git का एक नया संस्करण प्राप्त करते हैं, तो फिर से दोबारा शुरू करें:

$ git config --system http.sslcainfo /usr/local/share/ca-bundle.crt

और तुम सब तैयार हो जाओगे।

अंत में अगर आपके पास git का नया संस्करण है, तो चल रहे हैं:

$ git config -l --system

आपको लाइनों के साथ एक त्रुटि देनी चाहिए

fatal: unable to read config file '/usr/local/Cellar/git/1.8.2.2/etc/gitconfig'

यह आपकी टिप है कि आपको गिट को बताने की ज़रूरत है जहां मोज़िला ca-bundle है

अद्यतन करें:

.curlrc या आपकी समस्या का उपाय नहीं हो सकता है किसी भी स्थिति में, बस मोज़िला सीए बंडल को अपनी मशीन पर स्थापित करें, चाहे आपको इसे मैन्युअल रूप से डाउनलोड करना है या नहीं। यही महत्वपूर्ण है यहाँ पर। एक बार जब आप सी-बंडल प्राप्त करें, तो आप जाने के लिए अच्छा हो। सिर्फ जीआईटी कॉन्फ़िग कमांड चलाएं और सीए बंडल के लिए बिंदु जीआईटी।

अद्यतन करें

मुझे हाल ही में जोड़ना था:

मेरे। .zshenv डॉट फ़ाइल में .zshenv क्योंकि मैं zsh का उपयोग कर रहा हूं I export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt zshgit config विकल्प ज्यादातर मामलों में काम करता था, लेकिन एसएसएल ( rvm get stable उदाहरण के rvm get stable ) पर गिथूब मारने पर, मैं अभी भी प्रमाण पत्र मुद्दों में भाग गया @ एमवेरिक ने अपनी टिप्पणी में यह बताया, लेकिन सिर्फ अगर किसी ने इसे याद किया या मान लिया है कि उन्हें git config --system.... आदेश चलाने के अलावा इस वातावरण चर को निर्यात करने की आवश्यकता नहीं है। धन्यवाद और आशा है कि यह मदद करता है

अद्यतन करें

ऐसा लगता है कि कर्ल-सीए-बंडल हाल ही में होमब्रे से हटा दिया गया था। यहां एक सिफारिश है

आप कुछ फ़ाइलों को इसमें छोड़ना चाहेंगे:

$(brew --prefix)/etc/openssl/certs




.NETRC फ़ाइल का उपयोग करने की कोशिश करें, यह https पर प्रमाणीकरण करेगा अपनी होम डाइरेक्टरी में एक फ़ाइल कॉल .netrc बनाएं और उसे इसमें डालें:

machine github.com login myusername password mypass

अधिक जानकारी के लिए इस पोस्ट देखें:

https://plus.google.com/u/0/104462765626035447305/posts/WbwD4zcm2fj




मैं सोलारिस एक्सप्रेस 11 के लिए यह एक ही समस्या कर रहा था। यह मुझे थोड़ी देर के लिए ले गया लेकिन मुझे यह पता लगाना था कि प्रमाणपत्र कहाँ रखा जाना चाहिए। /etc/openssl/openssl.cnf के अनुसार, प्रमाणपत्र के लिए पथ / etc / openssl / certs है मैंने एलेक्सी से उपरोक्त सलाह का उपयोग करके प्रमाण पत्र तैयार किए।

आप यह पुष्टि कर सकते हैं कि चीजें कमांडलाइन पर openssl का उपयोग कर काम कर रही हैं:

openssl s_client -connect github.com:443



Windows सीएमडी में अस्थायी रूप से अक्षम / जीईएल एसएसएल सत्यापन द्वारा रूमाओ के समाधान में सुधार करें:

set GIT_SSL_NO_VERIFY=true
git config --global http.proxy http://<your-proxy>:443

इस समाधान के बारे में अच्छी बात यह है कि यह केवल वर्तमान सीएमडी विंडो में प्रभावी होता है।




क्या आपने अपना समय जांच लिया है?

मैंने पूरी तरह से मेरे जीआईटी संचालन को असुरक्षित बनाने से इनकार कर दिया और सब कुछ लोगों को यहां वर्णित करने के बाद, मुझे यह धक्का मिला कि एक संभावित कारण यह है कि प्रमाण पत्र का सत्यापन पार करने में विफल क्यों नहीं है कि तिथियां गलत हैं (प्रमाण पत्र समाप्ति तिथि या स्थानीय घड़ी)।

आप किसी टर्मिनल में date टाइप करके इसे आसानी से देख सकते हैं। मेरे मामले में (एक नया रास्पबेरी पी), स्थानीय घड़ी को 1 9 70 में स्थापित किया गया था, इसलिए एक सरल ntpdate -u 0.ubuntu.pool.ntp.org . ntpdate -u 0.ubuntu.pool.ntp.org तयशुदा सब कुछ आरपीआई के लिए, मैं यह भी अनुशंसा करता हूं कि आप निम्नलिखित स्क्रिप्ट को एक दैनिक क्रॉन जॉब में कहते हैं ( /etc/cron.daily/ntpdate कहते हैं):

#!/bin/sh
/usr/sbin/ntpdate -u 0.ubuntu.pool.ntp.org 1> /dev/null 2>&1



मैंने सबकुछ कोशिश की, आखिरकार मैं मेजबान फ़ाइल में देखा और वहां गिटब के लिए एक यादृच्छिक प्रवेश था। उपनाम हटाकर समस्या तय की

% Systemroot% \ system32 \ drivers \ आदि \ मेजबान




मुझे पता है कि यह मृत घोड़े का एक सा है, लेकिन एक ताजा, न्यूनतम ओपनएसयूएसईई 12.3 सर्वर पर लिनक्स उपयोगकर्ता के रूप में मुझे क्या करना था:

zypper in ca-certificates ca-certificates-cacert ca-certificates-mozilla

इसके बाद, मैं व्यापार में था।




मेरी भी यही समस्या थी। प्रमाणपत्र आयात या एसएसएल सत्यापन को सेट करने के लिए कमांड को काम नहीं किया। यह नेटवर्क प्रॉक्सी के लिए समयसीमा समाप्त होने वाला पासवर्ड हो सकता है प्रॉक्सी कॉन्फ़िग का प्रवेश था .gitconfig फ़ाइल में मेरे विंडोज़ प्रयोक्ता प्रोफाइल में मौजूद मैंने पूरी प्रविष्टि को हटा दिया और फिर से काम करना शुरू कर दिया।




मैं हाल ही में (जुलाई 2014) एक समान मुद्दा था और ओएस एक्स (10.9.4) पर पाया कि "डिजीक्रर्ट हाई एश्योरेंस ईआर रूट सीए" प्रमाणपत्र का समय समाप्त हो गया था (हालांकि मेरे पास एक और असुविधाजनक भी था)।

  1. खुली चाबी का गुच्छा एक्सेस
  2. "DigiCert" के लिए प्रमाणपत्र खोजें
  3. मेनू देखें> समय सीमा समाप्त प्रमाणपत्र दिखाएं

मुझे "डिजीर्ट हाई एश्योरेंस ईयूआर रूट सीए" नामक दो प्रमाण पत्र मिल चुके हैं, एक नवंबर 2031 को समाप्त हो रहा है और जुलाई 2014 में समय सीमा समाप्त हो गई है (कुछ दिनों पहले)। समाप्त होने वाले प्रमाण पत्र को हटाना मेरे लिए इस मुद्दे को हल किया।

उम्मीद है की यह मदद करेगा।