835

Git を使用して、自己署名証明書を受け入れるように指示する方法はありますか?

https サーバーを使用して git サーバーをホストしていますが、今のところ証明書は自己署名されています。

そこに初めてレポを作成しようとすると:

git push origin master -f

エラーが発生します:

error: Cannot access URL     
https://the server/git.aspx/PocketReferences/, return code 22

fatal: git-http-push failed
4

18 に答える 18

1505

特定の証明書を永続的に受け入れるには

http.sslCAPathまたはを試してくださいhttp.sslCAInfoAdam Spiers の答えは、いくつかの素晴らしい例を示しています。これは、質問に対する最も安全な解決策です。

単一の git コマンドの TLS/SSL 検証を無効にするには

適切な設定変数を渡し-cてみるか、フローの回答を使用してください:git

git -c http.sslVerify=false clone https://example.com/path/to/git

特定のリポジトリの SSL 検証を無効にするには

SSL 検証をグローバルに無効にすることができます。これを行わないことを強くお勧めしますが、完全を期すために言及されています。

git config --global http.sslVerify false # Do NOT do this!

にはかなりの数の SSL 構成オプションがありますgit。のマニュアルページからgit config

http.sslVerify
    Whether to verify the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_NO_VERIFY environment variable.

http.sslCAInfo
    File containing the certificates to verify the peer with when fetching or pushing
    over HTTPS. Can be overridden by the GIT_SSL_CAINFO environment variable.

http.sslCAPath
    Path containing files with the CA certificates to verify the peer with when
    fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CAPATH environment variable.

その他のいくつかの便利な SSL 構成オプション:

http.sslCert
    File containing the SSL certificate when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_CERT environment variable.

http.sslKey
    File containing the SSL private key when fetching or pushing over HTTPS.
    Can be overridden by the GIT_SSL_KEY environment variable.

http.sslCertPasswordProtected
    Enable git's password prompt for the SSL certificate. Otherwise OpenSSL will
    prompt the user, possibly many times, if the certificate or private key is encrypted.
    Can be overridden by the GIT_SSL_CERT_PASSWORD_PROTECTED environment variable.
于 2012-07-23T23:28:17.183 に答える
181

次のように設定できGIT_SSL_NO_VERIFYますtrue

GIT_SSL_NO_VERIFY=true git clone https://example.com/path/to/git

または、コマンドラインで接続を確認しないように Git を構成します。

git -c http.sslVerify=false clone https://example.com/path/to/git

SSL/TLS 証明書を検証しないと、MitM 攻撃を受けやすくなることに注意してください。

于 2013-10-14T15:11:19.333 に答える
6

Windows で 64 ビット バージョンの Git を使用して、自己署名 CA 証明書をこれらのファイルに追加するだけです。

  • C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt
  • C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.trust.crt

それが単なるサーバーの自己署名証明書である場合は、それを追加します

  • C:\Program Files\Git\mingw64\ssl\cert.pem
于 2018-03-05T12:52:20.920 に答える
4

Josh Peak回答のように、sslKey または sslCert を使用して 1 つのライナーを使用する場合は注意してください。

git clone -c http.sslCAPath="/path/to/selfCA" \
  -c http.sslCAInfo="/path/to/selfCA/self-signed-certificate.crt" \
  -c http.sslVerify=1 \
  -c http.sslCert="/path/to/privatekey/myprivatecert.pem" \
  -c http.sslCertPasswordProtected=0 \
https://mygit.server.com/projects/myproject.git myproject

Git 2.14.x/2.15 (2015 年第 3 四半期) のみが、パスのようなパスを~username/mykey正しく解釈できます (ただし、絶対パスのようなものは解釈できます/path/to/privatekey)。

Junio C Hamano ( )によるcommit 8d15496 (2017 年 7 月 20 日)を参照してください。 支援者:チャールズ・ベイリー ( ) . ( 2017 年 8 月 11 日コミット 17b1e1dJunio C Hamanoによってマージされました)gitster
hashpling
gitster

http.c: http.sslcertandhttp.sslkeyは両方ともパス名です

29508e1 (「共有 HTTP 要求機能の分離」、2005-11-18、Git 0.99.9k) でさまざまな http.* オプションを解析するために最新の http_options() コードパスが作成され、その後、複数の7059cd9の構成ファイル (" http_init(): 構成ファイルの解析を修正"、2009-03-09、Git 1.6.3-rc0) では、 " " プレフィックスが存在しない ことを理解するためhttp.sslkey、のような構成変数http.sslcertをプレーンなバニラ文字列として解析しました。git_config_pathname()~[username]/

後で、それらの一部 (つまりhttp.sslCAPathhttp.sslCAInfo) を関数を使用するように変換し、最初から関数を使用するように変数を追加しましhttp.cookeyFile http.pinnedpubkeyた。そのため、これらの変数はすべて " ~[username]/" プレフィックスを認識します。

残りの 2 つの変数http.sslcerthttp.sslkeyも規則に注意してください。これらはどちらも明らかにファイルへのパス名です。

于 2017-08-13T18:25:42.147 に答える
3

ウイルス対策とファイアウォールの設定を確認してください。

ある日から別の日に、git が機能しなくなりました。上記の説明から、Kaspersky が自己署名アンチウイルスの個人用ルート証明書を中間に配置していることがわかりました。上記の手順に従って、Git にその証明書を受け入れさせることができませんでした。私はそれをあきらめました。私にとってうまくいくのは、暗号化された接続をスキャンする機能を無効にすることです。

  1. カスペルスキーを開く
  2. 設定 > 追加 > ネットワーク > 暗号化された接続をスキャンしない

この後、git は sslVerify を有効にして再び動作します。

ノート。アンチウイルスのその機能を有効にしたいので、これはまだ満足のいくものではありません。詳細設定では、Kaspersky はその機能で動作しない Web サイトのリストを表示します。Github はそれらの 1 つとしてリストされていません。カスペルスキーフォーラムで確認してみます。いくつかのトピックがあるようです

于 2018-05-19T12:03:45.903 に答える
2

私は Windows マシンを使用していますが、この記事が役に立ちました。基本的に、メモ帳で ca-bundle.crt を開き、その中にチェーン証明書を追加しました (すべて)。この問題は通常、システムと git リポジトリの間に仲介者がいる会社のネットワークで発生します。ベース 64 形式のリーフ証明書を除く証明書チェーンのすべての証明書をエクスポートし、それらすべてを ca-bundle.crt に追加してから、この変更された crt ファイル用に git を構成する必要があります。

于 2019-08-06T09:29:52.137 に答える