[Git] एसएसएल प्रमाण पत्र ने फायरवॉल के पीछे एचटीटीपीएस पर गिटहब तक पहुंचने का प्रयास करने से इंकार कर दिया


Answers

समस्या यह है कि आपके पास आपके सिस्टम पर प्रमाणन प्राधिकरण प्रमाण पत्र स्थापित नहीं हैं। और इन certs cygwin के setup.exe के साथ स्थापित नहीं किया जा सकता है।

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

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

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

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

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

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

    यहां है कि इसे कैसे करना है। Cygwin setup.exe कर्ल स्थापित करें और 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 का उपयोग करना होगा। मैं विंडोज एक्सपी पर साइगविन 1.7.7 का उपयोग कर रहा हूं।

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

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

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

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

fatal: HTTP request failed

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

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




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

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

openssl s_client -connect github.com:443



मुझे दो चीजों की जरूरत थी:

  1. साइगविन सेटअप पर जाएं और पैकेज ' सीए-सर्टिफिकेट्स ' (यह नेट के नीचे है) शामिल करें (जैसा कि कहीं और इंगित किया गया है)।

  2. गिट को बताएं कि स्थापित प्रमाणपत्र कहां खोजें:

    GIT_SSL_CAINFO = / usr / ssl / certs / ca-bundle.crt GIT_CURL_VERBOSE = 1 गीट ...

    (Verbose विकल्प की आवश्यकता नहीं है)

    या विकल्प को स्थायी रूप से संग्रहीत करना:

    गिट कॉन्फ़िगरेशन --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt

    गिट ...




यदि आप बस इतना करना चाहते हैं कि सिथविन गिट क्लाइंट का उपयोग github.com के साथ करना है, तो डाउनलोड करने, निकालने, परिवर्तित करने, प्रमाणित फ़ाइलों को विभाजित करने की परेशानी के बिना बहुत आसान तरीका है। निम्नानुसार आगे बढ़ें (मैं सिग्विन और फ़ायरफ़ॉक्स के साथ विंडोज एक्सपी मान रहा हूं)

  1. फ़ायरफ़ॉक्स में, जिथब पेज पर जाएं (कोई भी)
  2. प्रमाण पत्र प्रदर्शित करने के लिए पता बार पर github आइकन पर क्लिक करें
  3. "अधिक जानकारी" -> "प्रदर्शन प्रमाण पत्र" -> "विवरण" के माध्यम से क्लिक करें और ऊपर के साथ शुरू होने वाले पदानुक्रम में प्रत्येक नोड का चयन करें; उनमें से प्रत्येक के लिए "निर्यात" पर क्लिक करें और पीईएम प्रारूप का चयन करें:
    • GTECyberTrustGlobalRoot.pem
    • DigiCertHighAssuranceEVRootCA.pem
    • DigiCertHighAssuranceEVCA-1.pem
    • github.com.pem
  4. उपरोक्त फ़ाइलों को अपने स्थानीय ड्राइव में कहीं सेव करें, एक्सटेंशन को .pem में बदलें और उन्हें अपने सिग्विन इंस्टॉलेशन (Windows: c: \ cygwin \ ssl \ certs) में / usr / ssl / certs पर ले जाएं।
  5. (वैकल्पिक) बैश से c_reshash चलाएं।

बस।

बेशक यह केवल एक प्रमाण पदानुक्रम स्थापित करता है, जिसे आपको जिथब के लिए जरूरी है। आप इस विधि का उपयोग किसी अन्य साइट के साथ 200 साइट्स को इंस्टॉल करने की आवश्यकता के बिना कर सकते हैं, जो आप (आवश्यक) ट्रस्ट नहीं करते हैं।







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

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 सेट करें। सीए फ़ाइल गिट का पथ उपयोग कर रहा है, आउटपुट में "कैफाइल:" से शुरू होने वाली लाइनों पर दिखाया जाएगा।




उन लोगों के लिए Msys / MinGW GIT का उपयोग करें, इसे जोड़ें

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 



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

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

formula आपके शेयर के लिए प्रमाण बंडल इंस्टॉल करता है:

share.install 'ca-bundle.crt'

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

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

$ echo insecure >> ~/.curlrc

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

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

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

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

$ brew update
$ brew upgrade

यदि आपको गिट का नया संस्करण मिलता है, तो बस पुन: चालू करें:

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

और आप सब तैयार हो जाएगा।

आखिरकार यदि आपके पास गिट का नया संस्करण है, तो चल रहा है:

$ git config -l --system

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

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

यह तुम्हारी नोक है कि आपको गिट को बताने की ज़रूरत है जहां मोज़िला सीए-बंडल है।

अद्यतन करें:

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

अद्यतन करें

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

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

अद्यतन करें

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

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

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




मैक ओएसएक्स 10.5 सिस्टम पर, मैं इसे एक साधारण विधि के साथ काम करने में सक्षम था। सबसे पहले, जीथब प्रक्रियाओं और परीक्षण को चलाएं, जो मेरे लिए ठीक काम करता है, यह दर्शाता है कि मेरा प्रमाणपत्र वास्तव में ठीक था। https://help.github.com/articles/generating-ssh-keys

ssh -T git@github.com

फिर मैंने अंततः रिमोट के लिए एक और यूआरएल प्रारूप देखा। मैंने उपरोक्त दूसरों की कोशिश की और वे काम नहीं कर पाए। http://git-scm.com/book/ch2-5.html

git@github.com:MyGithubUsername/MyRepoName.git

एक साधारण "गिट पुश myRemoteName" बहुत अच्छा काम किया!




मैंने बस SSL प्रमाणपत्र प्रमाणीकरण को अक्षम कर दिया है और नीचे दिखाए गए सरल उपयोगकर्ता नाम पासवर्ड लॉगिन का उपयोग किया है




Windows cmd में जीआईटी / कर्ल एसएसएल सत्यापन को अस्थायी रूप से अक्षम करके RouMao के समाधान में सुधार करें:

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

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




गिट को एक सहयोगी विकास मंच पर कॉन्फ़िगर करने के लिए मुझे एक ही समस्या का सामना करना पड़ा जिसे मुझे प्रबंधित करना है।

इसे हल करने के लिए:

  • मैंने सर्वर पर स्थापित कर्ल की रिलीज को अपडेट किया है। वेबसाइट पर अंतिम संस्करण डाउनलोड करें कर्ल के पेज डाउनलोड करें और स्थापना कार्यवाही का पालन करें कर्ल की स्थापना कार्यवाही

  • प्राधिकरण का प्रमाण पत्र वापस प्राप्त करें जो सर्वर के लिए प्रमाण पत्र प्रदान करता है।

  • इस प्रमाणपत्र को कर्ल द्वारा उपयोग की जाने वाली सीएसीर्ट फ़ाइल में जोड़ें। मेरे सर्वर पर यह /etc/pki/tls/certs/ca-bundle.crt में स्थित है।

  • .gitconfig फ़ाइल को संपादित करके और sslcainfo पथ सेट करके इस प्रमाणपत्र फ़ाइल का उपयोग करने के लिए गिट कॉन्फ़िगर करें। sslcainfo= /etc/pki/tls/certs/ca-bundle.crt

  • क्लाइंट मशीन पर आपको प्रमाणपत्र प्राप्त करना होगा और .gitconfig फ़ाइल को भी कॉन्फ़िगर करना होगा।

मुझे आशा है कि इससे आप में से कुछ की मदद मिलेगी।




एक रस्सी पीआई पर मैं था

पीआई @ रास्पबएमसी: ~ $ गिट क्लोन http: //github.com/andreafabrizi/Dropbox-Uploader .git 'ड्रॉपबॉक्स-अपलोडर' में क्लोनिंग ... त्रुटि: एसएसएल सीए प्रमाण (पथ? एक्सेस अधिकार?) के साथ समस्या पहुंचते समय समस्या http: // github.com/andreafabrizi/Dropbox-Uploader.git/info/refs घातक: HTTP अनुरोध विफल

तो आईडी ए

sudo apt-get install ca-certificates

फिर

git clone http://github.com/andreafabrizi/Dropbox-Uploader.git  

काम




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

Https : //the.repository के बजाय git: //the.repository का उपयोग करें और काम करेगा।

मुझे विंडोज़ पर टोर्टोइज गिट के साथ यह समस्या आई है और इससे हल हो गया है।