5

環境: Fedora 15 x64 (はい、それから離れます)、git 1.7.11.1。

Git サーバーで使用される暗号がクライアントでデフォルトで有効になっていないため、https リポジトリで失敗する git clone で問題が発生しています。

プレーンな「curl -v」で問題を再現することができました (curl 7.21.3 ですが、git は独自のコピーを使用しているようです)。

curl -v https://git.repo.com

(内部サーバー名が置き換えられました) Git のように失敗しますが、:

curl --cipher rsa_rc4_128_sha -v https://git.repo.com

成功します。

ここでの問題は、Git で使用される libcurl にそのようなフラグを渡す方法です。これまでのところ、そのような方法は見つかりませんでした (libcurl、git についてグーグルで検索し、Git と libcurl のソースを調べました)。

4

2 に答える 2

2

いいえ、暗号のリストを libcurl に指定するオプションはCURLOPT_SSL_CIPHER_LISTと呼ばれますが、git では使用されません。

この機能を導入するには、git ソース コードを変更する必要があります。難しすぎる必要はありません。将来的にこの変更を受け入れるようにgit プロジェクトを説得できるかもしれません!

于 2014-01-21T10:26:02.800 に答える
2

SSL 暗号を選択するための Git サポート

Git バージョン 2.5.0 (リリース ノートを参照) 以降、http.sslCipherListgit 構成変数を使用してこれを行うことができます。Git のバージョンをアップグレードできる場合、Git を介して libcURL に暗号のリストを渡すには、これが最善の方法です。

このhttp.sslCipherList変数は、Git のドキュメント内で次のように説明されています。

SSL 接続のネゴシエーション時に使用する SSL 暗号のリスト。利用可能な暗号は、libcurl が NSS または OpenSSL に対して構築されたかどうか、および使用中の暗号ライブラリの特定の構成によって異なります。内部的に、これはCURLOPT_SSL_CIPHER_LISTオプションを設定します。このリストの形式の詳細については、libcurl のドキュメントを参照してください。

Git コマンド

Git の暗号リストをグローバルに設定するには、次を実行します。

git config --global http.sslCipherList "<List of Cipher Identifiers>"

cURL が受け入れる暗号識別子は、cURL がリンクされている SSL ライブラリに基づいて異なることを理解することは非常に重要です。これにより、この構成値は、リンクされた SSL ライブラリが異なる cURL のすべてのインストール間で移植できなくなります。

さらに、バックエンド固有のドキュメントを以下にリンクしましたが、暗号識別子に関する cURL ドキュメントのみが信頼できます。これは、cURL 開発者がこのメーリング リスト スレッドで詳述されているように、各バックエンドのさまざまな識別子を完全に再現していないためです。

資力

于 2018-01-02T22:38:24.847 に答える