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-devlibcurl4-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


2
Ubuntu 14.04にアップグレードした後、これと同じ問題が発生しました。このソリューションはうまくいきました!
vertti

1
Linux Mint 16と連携して、「ソフトウェアソース」に移動し、公式リポジトリでソースを有効にする必要があります。また、コンパイルする前にlibcurl4-gnutls-devをアンインストールし、libcurl4-openssl-devに置き換える必要があります。
ギヨームペロット14年

1
不思議な心を助けるかもしれません。「repo」を使用してリポジトリ(Androidソースコードなど)をダウンロードし、gnutlsハンドシェイクの問題に遭遇した場合、@ Nyambaaの答えが機能します。RepoはGitに依存するスクリプトですので、良いはずです。Ubuntu 14.04 ltsで魔法のように働いた
KhoPhi

2
人々の(主に私自身の)正気のシェルスクリプト。github.com/SonOfLysander/git-openssl-shellscript/blob/master/...
ポール・ネルソン・ベイカー

4
ビルドステップのテストには非常に時間がかかります。gitメンテナーを信頼する場合は、上記の手順に従って、debian / rulesからTEST = test行を削除してスキップすることを強くお勧めします。
イーライ・アルバート・

9

私にとっては、SSL証明書が自己署名されていることになりました。これを試してみてください

git config --global http.sslVerify false


9
それはひどい考えです。によって行われたすべての TLS(SSL)接続のすべての認証を無効に、man-in-the-middle攻撃からの保護を解除します。git
カートJ.サンプソン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.