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


389

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

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

त्रुटि: SSL प्रमाणपत्र समस्या, सत्यापित करें कि CA प्रमाणपत्र ठीक है। विवरण:
त्रुटि: 14090086: 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 ... * सफलतापूर्वक प्रमाण पत्र सत्यापित स्थान सेट करें:
* CAfile: कोई
CApath: / usr / ssl / certs /
SSL प्रमाणपत्र समस्या, सत्यापित करें कि CA प्रमाणपत्र ठीक है। विवरण:
त्रुटि: 14090086: SSL रूटीन: SSL3_GET_SERVER_CERTIFICATE: प्रमाणपत्र सत्यापित विफल रहा
* समाप्त हो गया है
* समापन कनेक्शन # 0
* के बारे में (कनेक्ट करने के लिए) github.com पोर्ट 443 (# 0) के लिए
* 207.97.227.239 की कोशिश कर रहा है ... * सफलतापूर्वक प्रमाण पत्र सेट स्थान सत्यापित करें:
* CAfile: कोई नहीं
CApath: / usr / ssl / certs
* SSL प्रमाणपत्र समस्या, सत्यापित करें कि CA प्रमाणपत्र ठीक है। विवरण:
त्रुटि: 14090086: SSL रूटीन: SSL3_GET_SERVER_CERTIFICATE: प्रमाणपत्र सत्यापन विफल हुआ
* समाप्त हो गया है
* समापन कनेक्शन # 0
त्रुटि: SSL प्रमाणपत्र समस्या, सत्यापित करें कि CA प्रमाणपत्र ठीक है। विवरण:
त्रुटि: 14090086: SSL दिनचर्या: SSL3_GET_SERVER_CERTIFICATE: https://github.com/username/ExcelANT.git/info/refs का उपयोग करते समय प्रमाणपत्र सत्यापित विफल रहा

fatal: HTTP request failed

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

मैंने Git config में HTTP प्रॉक्सी सेट नहीं किया था, हालांकि यह एक ISA सर्वर है जिसे NTLM प्रमाणीकरण की आवश्यकता है, बुनियादी नहीं, इसलिए जब तक किसी को यह पता नहीं है कि NTLM का उपयोग करने के लिए git को कैसे मजबूर किया जाए, तो मुझे संदेह है।


अगर मैं http.sslVerify को गलत सेट करता हूं तो कनेक्शन सुरक्षित होगा? और यह उपयोग करने के लिए अच्छा रास्ता है? बीच में हम pfsense फ़ायरवॉल का उपयोग कर रहे हैं। अभी, उपयोगकर्ता प्रोफ़ाइल पर .gitconfig फ़ाइल रिक्त है।
नलपॉइंटर

जवाबों:


57

यदि आप प्रमाण पत्र की समस्या को ठीक करना चाहते हैं तो इस उत्तर को छोड़ दें। यह उत्तर फ़ायरवॉल के माध्यम से टनलिंग ssh से संबंधित है जो IMHO फ़ायरवॉल / प्रॉक्सी चीज़ों से निपटने का एक बेहतर समाधान है।

Http एक्सेस का उपयोग करने से बेहतर तरीका है और वह ssh.github.com सर्वर के पोर्ट 443 पर github द्वारा दी गई ssh सेवा का उपयोग करना है।

हम corkscrew नामक एक टूल का उपयोग करते हैं। यह आपके पसंदीदा पैकेजिंग टूल का उपयोग करके साइगविन (साइबरविन होमपेज से सेटअप के माध्यम से) और लिनक्स दोनों के लिए उपलब्ध है। MacOSX के लिए यह कम से कम macports और काढ़ा से उपलब्ध है।

कमांडलाइन निम्नानुसार है:

$ corkscrew <proxyhost> <proxyport> <targethost> <targetport> <authfile>

प्रॉक्सीहोस्ट और प्रॉक्सीपोर्ट https प्रॉक्सी के निर्देशांक हैं। टारगेट और टारस्पोर्ट, टनल टू टू होस्ट का स्थान है। ऑर्टिफाइल एक टेक्स्टफाइल है जिसमें 1 लाइन होती है जिसमें आपके प्रॉक्सी सर्वर का यूजरनेम / पासवर्ड होता है जो एक कॉलोन से अलग होता है

उदाहरण के लिए:

abc:very_secret

Git संचार के लिए "सामान्य" ssh प्रोटोकॉल का उपयोग करने के लिए स्थापना

~/.ssh/configइस ट्रिक से इसे जोड़कर सामान्य ssh कनेक्शन के लिए इस्तेमाल किया जा सकता है।

Host github.com
  HostName ssh.github.com
  Port 443
  User git
  ProxyCommand corkscrew <proxyhost> <proxyport> %h %p ~/.ssh/proxy_auth

अब आप इसे ssh-ing द्वारा gitproxy द्वारा काम कर सकते हैं

pti@pti-laptop:~$ ssh github.com
PTY allocation request failed on channel 0
Hi ptillemans! You've successfully authenticated, but GitHub does not provide shell access.
       Connection to github.com closed.
pti@pti-laptop:~$

(ध्यान दें: यदि आपने पहले कभी जीथब में लॉग इन नहीं किया है, तो ssh को ज्ञात होस्ट फ़ाइल में सर्वर कुंजी जोड़ने के लिए कहा जाएगा। यदि आप पंगु हैं, तो RSA फिंगरप्रिंट को जीथब साइट पर दिखाए गए एक पर सत्यापित करने की अनुशंसा की जाती है। अपनी कुंजी अपलोड की गई)।

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

# 
# account dedicated for the ACME private github account 
#
Host acme.github.com
  User git
  HostName ssh.github.com
  Port 443
  ProxyCommand corkscrew <proxyhost> <3128> %h %p ~/.ssh/proxy_auth
  IdentityFile ~/.ssh/id_dsa_acme

का आनंद लें!

हम इसे लिनक्स, मैक और विंडोज दोनों पर वर्षों से उपयोग कर रहे हैं।

अगर आप चाहें तो इस ब्लॉग पोस्ट में इसके बारे में अधिक पढ़ सकते हैं


मैंने यह काम करना छोड़ दिया, लेकिन इस पर एक और नज़र थी, और यह काम कर गया। gs Host ssh.github.com >User oharab >Hostname ssh.github.com >Port 443 >PreferredAuthentications publickey >IdentityFile ~/.ssh/id_rsa क्लोन का उपयोग करके .ssh / config> को> और क्लोनिंग में बदल git@ssh.github.com:oharab/log4vba.gitदिया गया और कुछ ही समय में चल रहा है।
oharab

1
मैं केवल डाउनवोटिंग कर रहा हूं क्योंकि नीचे दिया गया उत्तर अधिक सहायक है लेकिन दुर्भाग्य से स्टैकओवरफ्लो हमेशा स्वीकार किए गए उत्तर को सबसे ऊपर रखता है, भले ही यह केवल एक परिस्थिति के लिए एक उत्तर हो।
मेजरगार्ड

1
किसी भी मामले में मैंने जवाब अपडेट किया क्योंकि मुझे पता है कि https प्रॉक्सी के माध्यम से SSL टनलिंग अभी भी HTTPS प्रमाणपत्रों के साथ फ़िडलिंग या उन्हें अक्षम करने और एक समाधान के साथ समाप्त होने से बेहतर समाधान है जो अभी भी कम प्रदर्शनशील, उपयोगकर्ता के अनुकूल और कम सुरक्षित है। खैर, बहुत सारे उभार मुझे गलत साबित करते हैं लेकिन मैं इस मामले में किसी भी तरह से अपनी राय रखता हूं।
पीटर टिलमैंस

523

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

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

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

  1. वास्तव में रूट प्रमाण पत्र स्थापित करें। कर्ल लोग आप के लिए मोज़िला से प्रमाण पत्र निकाले

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

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

    $ 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भी स्थापित करना होगा ।

  2. SSL प्रमाणपत्र सत्यापन पर ध्यान न दें।

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

    $ env GIT_SSL_NO_VERIFY=true git clone https://github...
    

9
आपको कर्ल स्थापित करने की आवश्यकता नहीं है, बस wget का उपयोग करें:wget -O - http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_a fter=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
Deebster

38
मुझे पता है कि यह साइबरविन है, लेकिन अगर किसी को सेंटो का उपयोग करने के लिए यहाँ मिलता है, तो यह / etc / pki / tls /ts है जहाँ .pem को जाना चाहिए।
मोनिका सेलियो

2
मेरे लिए काम नहीं किया - हालांकि, मेरे पास मेरे रास्ते में c_rehash नहीं है। मैंने अपने खोल को फिर से शुरू करने की कोशिश की। मुझे mkdir -p / usr / ssl / certs भी लेना था। मैं सोच रहा था कि क्या मेरा साइग्विन स्थापित अलग है या कुछ गायब है? इसके अलावा, GIT_SSL_NO_VERIFY सेट करना = क्लोन ऑपरेशन चलाने के बाद सही इस त्रुटि के परिणामस्वरूप: fatal: https://code.google.com/.../info/refs not found: did you run git update-server-info on the server?शायद यह रिबूट के बाद काम करेगा?
जेफ एक्सल्रॉड

7
यह उत्तर गलत है। ca-certificatesलापता रूट प्रमाण पत्र प्राप्त करने के लिए सिर्फ साइबरविन पैकेज स्थापित करें । इस उत्तर को इतने उतार-चढ़ाव क्यों मिले?
ररबनी

32
SSL प्रमाणपत्र सत्यापन बंद न करें। यह पूरे उद्योग में टूल और एप्लिकेशन कोड में बहुत बार होता है। यह आपको मध्य हमले में एक आदमी के लिए खोलता है। यदि आप एसएसएल का उपयोग करने जा रहे हैं, तो इसे ठीक से उपयोग करें।
टिम

430

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

SSL CERT सत्यापन को अक्षम करने का एक तरीका है:

git config --global http.sslVerify false

यह CURL को HTTPS प्रमाणीकरण की सत्यता के लिए रोक देगा।

केवल एक भंडार के लिए:

git config http.sslVerify false

17
यदि आप अपनी वैश्विक सेटिंग्स (जैसे सभी रिपोज़) को संपादित नहीं करना चाहते हैं, तो बाहर निकलें --global
Erin

57
क्या आप कृपया नोट कर सकते हैं कि यह कितना खतरनाक है?
क्रॉनिकल

26
यह एक भयानक विचार है। एक कारण है कि प्रमाण पत्रों का सत्यापन किया जाना चाहिए। यदि आप प्रमाण पत्र को विश्वसनीय नहीं मानते हैं, तो प्रमाण पत्र किसी के द्वारा भी उत्पन्न किया जा सकता है और आप मध्य हमले में एक आदमी के लिए अतिसंवेदनशील हो सकते हैं।
मार्क कैरी

24
SSL सत्यापन बंद न करें!
टिम

14
सभी लोगों के लिए "यह मत करो": निश्चित रूप से यह सबसे सुरक्षित दृष्टिकोण नहीं है। लेकिन, यह बेहतर विकल्प है कि एसएसएल बिल्कुल नहीं है! क्योंकि कुछ लोग बस अपने निजी सरल git सर्वर चलाते हैं, यह उनके लिए ठीक है। ज़रूर, किसी भी वास्तविक सुरक्षा के लिए यह NO GO सेटिंग है। सबसे असुरक्षित चीज नेटवर्क के माध्यम से सादे बाइट्स भेज रही है।
पीटर स्टेग्नार

109

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

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

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

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

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

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


12
मेरे लिए, यह सबसे अच्छा जवाब है: यह यूनिक्स (नेटबीएसडी) पर काम करता है, यह सिस्टम पर केवल गिट और कुछ नहीं को प्रभावित करता है, और इसके लिए रूट / एडमिनिस्ट्रेटर एक्सेस की आवश्यकता नहीं होती है। धन्यवाद!
एरिक

1
बिल्कुल सही, एक भी बेहतर कर सकता है। मैंने /etc/ssl/certs/ca-certificates.crtअपनी उबंटू 8.04 एलटीएस पर अपने पुराने को इस फाइल के साथ बदल दिया है और यह जादुई रूप से काम करता है!
माइकल-ओ

1
@ नेटबीएसडी का उल्लेख करने के लिए धन्यवाद, क्योंकि इसका मतलब है कि मुझे यह उत्तर मिला। NetBSD थोड़ा अजीब है। मैंने ओपनएसएसएल पैकेज स्थापित किया, लेकिन यहां तक ​​कि आपको सीट्स भी नहीं मिलीं, बस एक प्लेसहोल्डर डायरेक्टरी।
एटॉमिक्यूलस

+200 अधिक भयानक, यह मेरे उबंटू बॉक्स पर भी काम करता है। Git में प्रमाणपत्र जाँच को अक्षम करने की आवश्यकता नहीं है, बस इसे शीघ्र ठीक करें।
कॉलिन डी बेनेट

11
उत्कृष्ट उत्तर, आप निम्नलिखित कमांड के साथ ~ / .gitconfig फ़ाइल को संपादित कर सकते हैं:git config --global http.sslCAinfo "$HOME/certs/cacert.pem"
एरन अहमदिया

41

ध्यान दें कि मुझे यह काम करने के लिए (आरवीएम सेंटोस 5.6 पर स्थापित), मुझे निम्नलिखित भाग करना था:

export GIT_SSL_NO_VERIFY=true

और उसके बाद, bash में RVM इंस्टॉलर को कर्लिंग करने के लिए मानक स्थापित प्रक्रिया ने एक इलाज किया :)


13
git config --global http.sslverify false
Dyno Fu

20
यह अत्यधिक खतरनाक है! SSL प्रमाणपत्र सत्यापन का पूरा बिंदु आपके कोड को उस समय छेड़छाड़ होने से बचाने के लिए है, जब आप इसे HTTPS पर प्रसारित कर रहे हैं! इसे अक्षम करने का मतलब है कि दुर्भावनापूर्ण लोग आपके कोड में कमजोरियों और अन्य गंदा चीजों को डाल सकते हैं जैसे ही आप इसे धक्का देते हैं और इसे लाते हैं!

अगर मैं http.sslVerify को गलत सेट करता हूं तो कनेक्शन सुरक्षित होगा? और यह उपयोग करने के लिए अच्छा रास्ता है? बीच में हम pfsense फ़ायरवॉल का उपयोग कर रहे हैं
Nullpointer

@Ravi कनेक्शन होगा तकनीकी रूप से काम , हाँ, लेकिन यह एक अच्छा विचार नहीं है। यदि आपके मूल और स्थानीय मशीन दोनों आंतरिक हैं और आपके संगठन के नियंत्रण में हैं, तो यह निष्क्रिय हो सकता है , लेकिन उपयोगकर्ता 456814 की टिप्पणी के अनुसार, सत्यापन अक्षम करने से आप MITM हमलों तक खुल जाते हैं।
डॉकटोर जे

40

एक बहुत ही सरल उपाय: प्रतिस्थापित करें https: // git के साथ: //

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

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


मुझे लगता है कि यह काम करता है क्योंकि यह ssl को सत्यापित नहीं करता है git://। जैसा कि ऊपर दिए गए इस उत्तर में कहा गया है , एसएसएल सत्यापन को अक्षम करना एक सुरक्षा जोखिम है।
danijar

5
@danijar इस कारण से काम करता है क्योंकि यह एसएसएल का उपयोग बिल्कुल भी नहीं करता हैgit://प्रोटोकॉल SSH, जो उपयोग करता है, प्रमाणीकरण और एन्क्रिप्शन के लिए सार्वजनिक और निजी कुंजी युग्म SSH एक SSL प्रमाणपत्र के बजाय का उपयोग करता है।

11
@Cupcake SSH का उपयोग नहींgit:// करता है । देखें SSH प्रोटोकॉल और Git प्रोटोकॉल
nyuszika7h

@ nyuszika7h ओह, आप सही कह रहे हैं। मैं git://उलझन में रहता हूं git@github.com:user/project.git, जो एससीपी-ईश सिंटैक्स है

31

सबसे लोकप्रिय उत्तर के रूप में (एलेक्सी विसेन्टसेव के पास):

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

हालाँकि, वह अंतिम दावा गलत है (अब, या हमेशा रहा है, मुझे नहीं पता)।

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


1
cygwin git error दिखाता है CAfile: /etc/ssl/ca-bundle.crtजबकि cygwin ca-प्रमाणपत्र पैकेज स्थापित करता है /usr/ssl/certs/ca-bundle.crt। इसलिए, ~/.gitconfigस्थान निर्दिष्ट करने के लिए संपादन करना पड़ा : [http]तबsslCAinfo = /usr/ssl/certs/ca-bundle.crt
अधिकतम 19

@ maxpolk: मैंने एक लिंक बनाया होगा लेकिन प्रभाव समान है। यह स्पष्ट रूप से साइबर बग में एक बग है, क्या आपने टिकट बढ़ाने पर विचार किया है? sudo ln -s /usr/ssl/certs/ca-bundle.crt /etc/ssl/
दिरकजोत

आज के 2013-5-23 के अनुसार, cygwin git https पर ठीक काम करता है: यदि आपके पास भी cygwin की स्थापना करने के लिए याद है / है ca-certificates
बोब्बोगो

मैं इस सवाल से यहाँ मिला , जिसने संकेत दिया कि यहाँ एक उत्तर मिल सकता है। हालाँकि, न तो जुड़ा हुआ उत्तर और न ही यह उत्तर मेरे लिए काम करते हैं; TortoiseSVN आउटपुट रखता हैerror: SSL certificate problem, verify that the CA cert is OK.
या मैपर

पैकेज मैनेजर से हम वास्तव में साइबरविन इंस्टालेशन फ़ाइलों को कहाँ स्थापित करते हैं? क्या जीआईटी के बिन फ़ोल्डर में सीए-सर्टिफिकेट होना चाहिए?
221 बी

16

मुझे पता है कि मूल प्रश्न Cygwin को सूचीबद्ध करता है, लेकिन यहाँ CentOS का समाधान है:

curl http://curl.haxx.se/ca/cacert.pem -o /etc/pki/tls/certs/ca-bundle.crt

स्रोत: http://eric.lubow.org/2011/security/fixing-centos-root-certificate-authority-issues/


इसने मेरे लिए बहुत काम किया; आपको संभवतः पहले ओपी का सुझाव देते हुए मूल का बैकअप बनाना चाहिए। ऐसा लगता है कि ऐसा तब होता है जब जीथब अपने प्रमाण पत्र को नवीनीकृत करता है, यदि आप एक पुराने सिस्टम में हैं।
इवान डोनोवन

CentOS 5 पर मैंने इसे ठीक कर दिया yum update openssl, जो ca-बंडल को भी अपडेट करता है।
raarts

यदि आप इस विकल्प का पालन करने जा रहे हैं, तो आपको उपयोग करने से पहले फ़ाइल के SHA-256 हैश को सत्यापित करना चाहिए। आप वर्तमान फ़ाइल के लिए sha256sum को आपके द्वारा सेट किए जा रहे कर्ल की तुलना में कुछ अन्य माध्यमों से प्राप्त कर सकते हैं (जैसे एक अलग मशीन पर ब्राउज़र जो पहले से सुरक्षित रूप से सेट है) और फिर आउटपुट के खिलाफ इसकी तुलना करना sha256sum /etc/pki/tls/certs/ca-bundle.crtसुनिश्चित करें कि आपको अधिकार मिला है फ़ाइल।
कबोलिनो

16

SSL की स्थापना करते समय विंडो पर क्लोन करने के लिए झूठी पुष्टि करें:

    git -c http.sslVerify=false clone http://example.com/e.git

यदि आप अपनी वैश्विक सेटिंग्स को कम करने के बिना क्लोन करना चाहते हैं।


14

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

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


वाह! इसने मेरे लिए Red Hat linux के पुराने इंस्टाल (4.1.2) के लिए काम किया। धन्यवाद!
जोश

13

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

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

बस।

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


8

यदि आप Mac OS X पर हैं, तो आप ca-cert-बंडल को इसके माध्यम से स्थापित कर सकते हैं homebrew:

$ 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, और कर्ल-ca-बंडल द्वारा प्रदान की जाती है Mozilla। यह वही है जिसे आप बहुत सारे मुद्दों में संदर्भित करते हैं। उम्मीद है कि यह मदद करता है क्योंकि यह मैक ओएस एक्स पर इस दृष्टिकोण के बारे में बहुत सीधा brew install curlनहीं है। यह आपको बहुत अधिक नहीं मिल रहा है क्योंकि यह केवल केग है और लिंक नहीं किया जाएगा (रनिंग which curlहमेशा आउटपुट होगा /usr/bin/curl, जो कि डिफ़ॉल्ट रूप से आपके जहाजों के साथ है ओएस)। यह पद कुछ मूल्य का भी हो सकता है

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

$ echo insecure >> ~/.curlrc

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

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

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

इसलिए दौड़ने के बाद:

$ 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'

यह आपकी टिप है जिसे आपको यह बताने की आवश्यकता है कि मोज़िला सीए-बंडल कहाँ है।

अपडेट करें:

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

अपडेट करें

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

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

अपडेट करें

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

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

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


1
आप निम्नलिखित को भी आज़मा सकते हैं: export CURL_CA_BUNDLE=/usr/local/share/ca-bundle.crt
Maverick

नमस्ते, मैं एक समान मुद्दा ( stackoverflow.com/questions/20939105/… ) कर रहा हूँ और जब मैं घर काढ़ा स्थापित करने की कोशिश करता हूँ तो वही मुद्दा दिखाई देता है। मैं इस मामले में क्या कर सकता हूं? मेरे कंसोल में "git config --system http.sslcainfo/usr/local/share/ca-bundle.crt" टाइप करना "त्रुटि": कॉन्‍फ़िगरेशन फ़ाइल /Applications/Xcode.app.Contents/Developer/usr/etc/ लॉक नहीं कर सका gitconfig: ऐसी कोई फ़ाइल या निर्देशिका नहीं है "। आपके सहयोग के लिए धन्यवाद!
मथिउ

@ मैथ्यू बहुत अजीब है। लगता है जैसे आपका सिस्टम XCode के सापेक्ष git के संस्करण की ओर इशारा कर रहा है। आपके टर्मिनल से 'कौन सा git' चलाने का आउटपुट है?
ए-डब

6

आप इस कमांड को टर्मिनल में आज़मा सकते हैं :

git config --global http.sslVerify असत्य


5

मैंने इस समस्या को apt-cyg ( apt-get के समान एक महान इंस्टॉलर) का उपयोग करके आसानी से ca- प्रमाणपत्र (Git और कई और सहित ) डाउनलोड करने के लिए निर्धारित किया है :

apt-cyg install ca-certificates

नोट : apt-cyg को पहले स्थापित किया जाना चाहिए। आप इसे विंडोज कमांड लाइन से कर सकते हैं:

cd c:\cygwin
setup.exe -q -P wget,tar,qawk,bzip2,subversion,vim

Windows cmd बंद करें, और Cygwin बैश खोलें:

wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
install apt-cyg /bin

यह मेरे लिए काम नहीं किया - मुझे अभी भी वही त्रुटि मिलती है।
होल्डनली

4

एक rasbery पी पर मैं था

pi @ raspbmc: ~ $ git clone http: //github.com/andreafabrizi/Dropbox-Uploader .git क्लोनिंग में 'ड्रॉपबॉक्स-अपलोडर' ... त्रुटि: SSL प्रमाणपत्र के साथ समस्या (पथ-पहुंच अधिकार?) एक्सेस करते समय? 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  

काम


4

यदि आप डेबियन-आधारित ओएस का उपयोग करते हैं, तो आप बस चला सकते हैं

apt-get install सीए-सर्टिफिकेट


4

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

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

openssl s_client -connect github.com:443

3

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

machine github.com login myusername password mypass

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

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


यह एक प्रमाण पत्र सत्यापन मुद्दा है, प्रमाणीकरण मुद्दा नहीं है - कुछ ऑपरेटिंग सिस्टम (ओपी रन सहित) में सीए को स्टॉक सूची में शामिल जीथब का नया प्रमाण पत्र जारी नहीं करना है।
चार्ल्स डफी

3

Windows cmd में GIT / कर्ल ssl सत्यापन को अस्थायी रूप से अक्षम करके RouMao के समाधान में सुधार करें:

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

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


3
यह अत्यधिक खतरनाक है! SSL प्रमाणपत्र सत्यापन का पूरा बिंदु आपके कोड को उस समय छेड़छाड़ होने से बचाने के लिए है, जब आप इसे HTTPS पर प्रसारित कर रहे हैं! इसे अक्षम करने का मतलब है कि दुर्भावनापूर्ण लोग आपके कोड में कमजोरियों और अन्य गंदा चीजों को डाल सकते हैं जैसे ही आप इसे धक्का देते हैं और इसे लाते हैं!

3

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

मैंने अपने git ऑपरेशंस को असुरक्षित बनाने से पूरी तरह से इंकार कर दिया और यहां बताए गए सभी चीज़ों को आज़माने के बाद, इसने मुझ पर प्रहार किया कि एक संभावित कारण है कि प्रमाण-पत्र सत्यापन में विफल हो जाते हैं, तारीखें गलत हैं (या तो प्रमाणपत्र समाप्ति की तारीख, या स्थानीय क्लॉक)।

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

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

3

गितुब से एक्सेस टोकन उत्पन्न करें और इसे सहेजें, क्योंकि यह फिर से दिखाई नहीं देगा।

git -c http.sslVerify=false clone https://<username>:<token>@github.com/repo.git

या,

git config --global http.sslVerify false
git clone https://github.com/repo.git

2

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

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

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

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

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

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

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

मुझे उम्मीद है कि यह आपकी कुछ मदद करेगा।


1

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

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


1

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


0

मुझे सिगविन के लिए सिर्फ सर्टिफिकेट चाहिए और git तो मैंने वही किया जो @esquifit ने पोस्ट किया था। हालाँकि, मुझे मैन्युअल रूप से चरण 5 चलाना था, c_rehash मेरे सिस्टम पर उपलब्ध नहीं था। मैंने इस गाइड का अनुसरण किया: CA प्रमाणपत्रों को OpenSSL ढांचे में स्थापित करना


0

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

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

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

    GIT_SSL_CAINFO = / usr / ssl / certs / ca-bundle.crt GIT_CURL_VERBOSE = 1 git ...

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

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

    git config --global http.sslCAinfo /usr/ssl/certs/ca-bundle.crt

    git ...


-2

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


-2

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

ssh -T git@github.com

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

git@github.com:MyGithubUsername/MyRepoName.git

एक साधारण "git push myRemoteName" ने बहुत अच्छा काम किया!


-2

मैं हाल ही में (जुलाई 2014) एक ही मुद्दा था और OS X (10.9.4) पर पाया गया था कि "DigiCert हाई एश्योरेंस EV रूट CA" प्रमाणपत्र समाप्त हो गया था (हालांकि मेरे पास एक और unexpired एक भी था)।

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

मुझे "DigiCert High Assurance EV Root CA" नाम के दो सर्टिफिकेट मिले, जिनमें से एक एक्सपी 20 नवंबर को समाप्त हो गया और एक जुलाई 2014 को समाप्त हो गया (कुछ दिन पहले)। समाप्त प्रमाण पत्र को हटाने से मेरे लिए समस्या हल हो गई।

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


-2

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

  export GIT_SSL_CAINFO=/mingw32/ssl/certs/ca-bundle.crt 
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.