git
を使用してHTTPSサーバーに接続しようとすると、次のエラーが表示されます。
error: gnutls_handshake() failed: A TLS packet with unexpected length was received. while accessing ...
fatal: HTTP request failed
gnutls_handshake
に関連するいくつかのパッケージが壊れている可能性があります。だから、それらを再インストールしたい。
これらのエラーに関連するパッケージはどれですか?または、この種のエラーを修正するにはどうすればよいですか?
問題の理由は、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