Https सर्वर से कनेक्ट होने पर "त्रुटि: gnutls_handshake () विफल"


62

जब मैं किसी भी HTTPS सर्वर से जुड़ने की कोशिश करता हूं git, तो यह निम्नलिखित त्रुटि देता है:

error: gnutls_handshake() failed: A TLS packet with unexpected length was received. while accessing ...
fatal: HTTP request failed

मुझे लगता है कि शायद कुछ पैकेज जो संबंधित gnutls_handshakeहैं, वे टूट गए हैं। इसलिए, मैं उन लोगों को फिर से स्थापित करना चाहता हूं।

कौन से पैकेज इन त्रुटियों से संबंधित हो सकते हैं? या मैं इस तरह की त्रुटि को कैसे ठीक करूं?


2
यह अन्य प्रश्न मदद कर सकता है।
क्रिस्टोफर

1
मेरे मामले में यह एक साधारण प्रमाणीकरण सर्वर था, जिसके लिए हमें इंटरनेट का उपयोग करने से पहले लॉगिन करना होगा, जो रास्ते में आ रहा था। मुझे पहले वहां लॉगिन करना था, और फिर त्रुटि गायब हो गई।
साहिल सिंह

जवाबों:


93

समस्या का कारण है, यह gnutlsपैकेज था । यह एक प्रॉक्सी के पीछे अजीब काम कर रहा है। लेकिन opensslकमजोर नेटवर्क में भी ठीक काम कर रहा है। तो वैकल्पिक हल है कि हम संकलन चाहिए gitसाथ openssl। ऐसा करने के लिए, निम्न आदेश चलाएँ:

sudo apt-get update
sudo apt-get install build-essential fakeroot dpkg-dev
sudo apt-get build-dep git
mkdir ~/git-openssl
cd ~/git-openssl
apt-get source git
dpkg-source -x git_1.7.9.5-1.dsc
cd git-1.7.9.5

( 1.7.9.5अपने सिस्टम में git के वास्तविक संस्करण के साथ बदलना याद रखें ।)

फिर, संपादित debian/controlफ़ाइल (कमांड चलाएँ: gksu gedit debian/control) और के सभी उदाहरणों की जगह libcurl4-gnutls-devके साथ libcurl4-openssl-dev

फिर पैकेज बनाएं (यदि यह परीक्षण में विफल हो रहा है, तो आप TEST=testफ़ाइल से लाइन हटा सकते हैं debian/rules):

sudo apt-get install libcurl4-openssl-dev
sudo dpkg-buildpackage -rfakeroot -b

नया पैकेज स्थापित करें:

i386: sudo dpkg -i ../git_1.7.9.5-1_i386.deb

x86_64: sudo dpkg -i ../git_1.7.9.5-1_amd64.deb


यहाँ से प्रेरित: https://github.com/xmendez/wfuzz/wiki/PyCurlSSBBug


2
उबंटू 14.04 में अपग्रेड करने के बाद यही मुद्दा था। यह समाधान महान काम किया!
खड़ी

1
लिनक्स टकसाल 16 के साथ काम करते हुए, आपको "सॉफ़्टवेयर स्रोत" पर जाना होगा और आधिकारिक रिपॉजिटरी पर स्रोतों को सक्षम करना होगा। आपको libcurl4-gnutls-dev की स्थापना रद्द करनी होगी और संकलन करने से पहले libcurl4-coverssl-dev द्वारा प्रतिस्थापित करना होगा।
गिलियूम पेरोट

1
सोच समझ कर मदद कर सकते हैं। यदि आप एक रिपॉजिटरी (एंड्रॉइड सोर्स कोड कहते हैं) को डाउनलोड करने के लिए और gnutls-handshake समस्या के पार आने के लिए 'रेपो' का उपयोग कर रहे हैं, तो @ Nyambaa का उत्तर काम करता है। रेपो एक स्क्रिप्ट है जो Git पर निर्भर करती है, इसलिए आपको अच्छा होना चाहिए। मेरे उबंटू पर जादू की तरह काम किया 14.04 lts
खोई नोवी

2
लोगों के लिए शेलस्क्रिप्ट (मुख्य रूप से मेरी अपनी) पवित्रता। github.com/SonOfLysander/git-openssl-shellscript/blob/master/…
पॉल नेल्सन बेकर

4
बिल्ड चरण में परीक्षण वास्तव में लंबा समय लेते हैं। यदि आप गिट अनुरक्षकों पर भरोसा करते हैं, तो मैं ऊपर दिए गए निर्देशों का पालन करने का सुझाव देता हूं ताकि डेबियन / नियमों से टेस्ट = टेस्ट लाइन हटाकर उन्हें छोड़ दें।
एली अल्बर्ट

9

मेरे लिए, यह समाप्त हो रहा है कि एसएसएल प्रमाणपत्र स्व-हस्ताक्षरित था। इसे आजमाइए

git config --global http.sslVerify false


9
यह एक भयानक विचार है; यह प्रत्येक TLS (SSL) कनेक्शन के लिए सभी प्रमाणीकरण को निष्क्रिय कर देता है , जो आपके बीच के हमलों से आपकी सुरक्षा को हटा देता है। git
कर्ट जे। सैम्पसन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.