"ошибка: сбой gnutls_handshake()" при подключении к серверу https

Когда я пытаюсь подключиться к любому серверу HTTPS с git, это дает следующую ошибку:

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

Я думаю, что, возможно, некоторые пакеты, которые связаны с gnutls_handshake были сломаны. Итак, я хочу переустановить их.

Какие пакеты могут быть связаны с этими ошибками? Или как я могу исправить эту ошибку?

2 ответа

Получил причину проблемы, это было 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/PyCurlSSLBug

Для меня это закончилось тем, что сертификат SSL был самоподписанным. Дайте это попробовать

git config --global http.sslVerify false

Об этом упоминается в одном из комментариев к другому ответу, но я считаю, что он должен быть более заметным Paul Nelson Baker написал сценарий оболочки, который для меня решил эту проблему..

Скрипт доступен в его репозитории https://github.com/paul-nelson-baker/git-openssl-shellscript и повторно компилирует git с openssl вместо gnutls. Прочтите README, чтобы прочитать всю историю, но у меня это сработало, поэтому спасибо, Пол.

Другие вопросы по тегам