Pertanyaan “Kesalahan: gnutls_handshake () gagal” saat menghubungkan ke server https


Ketika saya mencoba untuk terhubung ke server HTTPS dengan git, ini memberikan kesalahan berikut:

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

Saya pikir mungkin beberapa paket yang terkait gnutls_handshake telah rusak. Jadi, saya ingin menginstal ulang itu.

Paket mana yang dapat dikaitkan dengan kesalahan ini? Atau bagaimana cara memperbaiki kesalahan semacam ini?


50
2017-09-12 05:43


asal


Ini pertanyaan lain mungkin membantu. - Christopher
Dalam kasus saya itu adalah server autentikasi sederhana, yang harus kami masuki sebelum menggunakan internet, yang datang di jalan. Saya harus login terlebih dahulu, dan kemudian kesalahan itu lenyap. - Sahil Singh


Jawaban:


Punya alasan masalah, itu gnutls paket. Ini bekerja aneh di belakang proxy. Tapi openssl berfungsi dengan baik bahkan di jaringan yang lemah. Jadi solusi adalah bahwa kita harus mengkompilasi git dengan openssl. Untuk melakukan ini, jalankan perintah berikut:

sudo apt-get update
sudo apt-get install build-essential fakeroot dpkg-dev libcurl4-openssl-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

(Ingat untuk mengganti 1.7.9.5 dengan versi git yang sebenarnya di sistem Anda.)

Kemudian, edit debian/control file (jalankan perintah: gksu gedit debian/control) dan mengganti semua contoh libcurl4-gnutls-dev dengan libcurl4-openssl-dev.

Kemudian buat paket (jika gagal pada tes, Anda dapat menghapus garis TEST=test dari file debian/rules):

sudo dpkg-buildpackage -rfakeroot -b

Instal paket baru:

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


Terinspirasi dari sini: https://github.com/xmendez/wfuzz/wiki/PyCurlSSLBug


87
2017-09-13 03:34



Punya masalah yang sama setelah upgrade ke Ubuntu 14.04. Solusi ini berhasil! - vertti
Bekerja dengan Linux Mint 16, Anda harus pergi ke "Sumber Perangkat Lunak" dan mengaktifkan sumber pada repositori resmi. Anda juga harus menghapus libcurl4-gnutls-dev dan mengganti dengan libcurl4-openssl-dev sebelum melakukan kompilasi. - Guillaume Perrot
Mungkin membantu pikiran yang bertanya-tanya. Jika Anda menggunakan 'repo' untuk mengunduh repositori (katakanlah kode sumber android) dan menemukan masalah gnutls-handshake, jawaban @ Nyambaa bekerja. Repo adalah skrip yang bergantung pada Git, jadi Anda harus bagus. Bekerja seperti sulap pada Ubuntu 14.04 LTS saya - Rexford
Kerangka untuk kewarasan orang (terutama saya sendiri). github.com/SonOfLysander/git-openssl-shellscript/blob/master/… - Paul Nelson Baker
tes dalam langkah build membutuhkan waktu yang sangat lama. jika Anda mempercayai pengelola git, saya sangat menyarankan untuk mengikuti petunjuk di atas untuk melewatinya dengan menghapus TEST = test line dari debian / aturan. - Eli Albert


Bagi saya, itu berakhir dengan sertifikat SSL ditandatangani sendiri. Cobalah ini

git config --global http.sslVerify false


5
2018-02-25 23:15



bekerja untukku. Terima kasih - dragonmnl
bekerja seperti pesona. Terima kasih - cHida
Itu ide yang buruk; ini menonaktifkan semua otentikasi untuk setiap Koneksi TLS (SSL) dibuat oleh git, lepaskan perlindungan Anda dari serangan man-in-the-middle. - Curt J. Sampson