web-dev-qa-db-ja.com

Gitサーバーにプッシュするときに無効なSSL証明書

WindowsサーバーでGitblitを実行していますが、ネットワーク上の別のマシンからリポジトリにデータをプッシュしようとしています。 SSL証明書を使用しました(自己署名ではありませんが、会社によって署名されていると思いますか?動作の仕組みは確かではありませんが、Chrome、IEなどは本人確認が行われています)。

Gitblitを実行するサーバーの名前はitscmです。開発者のデスクトップでは、このURLを使用してTortoiseGit経由でデータをプッシュします。

git.exe Push --progress  "https://itscm:8234/git/TestRepo.git" master

しかし、私はこのエラーを受け取ります:

致命的: ' https:// itscm:8234/git/TestRepo.git / 'にアクセスできません:SSL証明書の問題:証明書チェーン内の自己署名証明書

クロムでそのアドレスにアクセスすると、ページに404が表示されますが、URLバーの南京錠が緑色であることがわかります。南京錠をクリックすると、身元が確認されたことがわかります。ブラウザーがこの証明書を有効であると認識する方法がわかりませんが、Gitを介してデータをプッシュしようとすると失敗します。

27
Justin

Git for Windowsには、通常ファイルにある信頼できる証明書の独自の信頼ストアがあります

  • Git for Windows <= 1.9:_[Git installdir]\bin\curl-ca-bundle.crt_(例:C:\Program Files (x86)\Git\bin\curl-ca-bundle.crt; _http.sslCAinfo_のキー_[Git installdir]\etc\gitconfig_によって構成されます。
  • Git for Windows> = 2.0:_[Git installdir]\mingwXX\ssl\certs\ca-bundle.crt_ここで、XXは_32_または_64_を表します(たとえば、_C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt_;キー_http.sslCAinfo_で構成されます) _C:\ProgramData\Git\config_)。

証明書のチェックを無効にする(たとえば、_git config http.sslVerify false_を設定する)ことはお勧めできません。非常に危険です(すべてのセキュリティチェックが無効になっており、 MitM攻撃 が簡単に可能です。すべての新しいhttps接続に適用するように設定してください)。

この信頼ストアに証明書(自己署名証明書または別のルート証明書である場合があります)を追加して、自動的に信頼するには、次の手順を実行する必要があります。

  1. Internet ExplorerでサイトのURLを開きます
  2. ローカルバーのロック記号をクリックして、「証明書を表示」を選択します(またはサイトのプロパティを選択して「証明書」をクリックします)
  3. (オプション)証明書チェーン(3番目のタブ)で信頼する証明書を選択して開きます
  4. 2番目のタブ「詳細」に移動します
  5. [ファイルに保存]をクリックし、[Base64-encoded X.509(.CER)]を選択して一意の名前で保存します(その名前を忘れないでください。スペースなしの名前をお勧めします)。
  6. 今、あなたはいくつかのオプションがあります

    1. この証明書のみを信頼ストアとして使用するために、CLIシェルで_git config --global http.sslCAinfo "[yourfilename]"_を実行して、ダウンロードしたばかりの証明書のみを含む別の証明書信頼ストアを使用します。
    2. ダウンロードしたばかりの証明書とgit信頼ストアからのすべての証明書を含む別の証明書信頼ストアを使用します。システム信頼ストアファイルのすべてのコンテンツを追加し(上記を参照)、cliシェルで_git config --global http.sslCAinfo "[yourfilename]"_を順番に実行しますこの新しいトラストストアを使用します。
    3. 保存したばかりのファイルの内容を_[path-to-git-trust-store-crt-file]_に追加して、システム証明書ファイルを更新します(たとえば、管理者権限で実行しているCLIシェルで_type [yourfilename] >> [path-to-git-trust-store-crt-file]_を使用)ORをメモ帳を使用して(デスクトップ上のca-bundle.crtファイルのコピー、ダウンロードされた.crtファイルの内容を追加してからコピーして戻します)。短所:git updateで変更が上書きされる可能性があります

できた現在、この証明書はGit for Windowsのトラストストアにあります。

31
MrTux

TortoiseGitはおそらく同じトラストストアChromeを使用していないでしょう。 Chromeはシステムストアを使用し、Firefoxは独自のものを使用します。TortoiseGitが何を使用しているかはわかりません。

クライアントでgit config http.sslVerify falseを設定すると、さらに運が上がる場合があります。 これをグローバルに設定 にすることもできます。

23
James Moger

ここに私のために働いたものがあります。フォルダーC:\GitCertsを作成します。次に、このBase64 .cerフォルダーにC:\GitCertsファイルをダウンロードします( MrTux で提供される回答に従います)。

  • コマンドラインから次のコマンドを実行します:git config --global http.sslCAinfo "C:\GitCerts\MyCert.cer"
  • メモ帳でMyCert.cerファイルを開き、開いたままにします
  • 別のメモ帳でGit ca-bundle.crtファイルを開きます。私の場所はC:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crtでした。
  • MyCert.cerからすべてのテキストをコピーアンドペーストするだけでなく、MyCert.cerファイル内の証明書テキストがca-bundle.crtファイル内にあることを確認します(そうする必要があります)。 bundle.crtファイル(他のすべての証明書情報を必ず残してください)。

-----証明書の開始-----

あなたの証明書情報はこちら

-----証明書の終了-----

  • Ca-bundle.crtファイルを変更する必要がある場合は、保存します(デスクトップに保存してからコピーして貼り付け、ca-bundle.crtファイルを上書きする必要がある場合があります)
  • 最後に、ca-bundle.crtファイルのパスに基づいて、次のコマンドを実行します:git config --global http.sslcainfo "C:\Program Files\Git\mingw64\ssl\certs\ca-bundle.crt"
3
dan-iel

corporatesの場合、自己署名証明書エラーが発生します-以下が代替手段です。

企業では、httpsプロトコル経由でアクセス可能な同じgitサーバー、通常はsshプロトコル経由でもアクセスできます。サーバーURLのsshオプションを選択し、リポジトリを次のように複製します。

git clone user@server/project.git

もちろん、公開鍵(id_rsa.pub)あなたの~\.sshフォルダーをサーバーに追加する必要があります。この方法では、httpsサーバー証明書をWindows証明書ストアまたはmacキーチェーンに追加する必要はありません( example )。

0
Kiran

GitHubを使用してこのエラーが発生しましたが、どこからともなく発生したようです。以前、GitHubで多くの作業を行っていました。

カスペルスキーのアンチウイルスが犯人でした!!

アンチウイルス保護をオフにした(そして数分待った)とき、githubリポジトリからプッシュ/プルすることができました。

私の最後の解決策は、カスペルスキーから証明書を見つけて、それをGit for Windowsのトラストストアに追加することでした。後者の手順については、既に受け入れられている回答で詳しく説明されていますが、同様の立場にある他の人については、次の手順でKaspersky証明書を見つけることができました。

設定>追加>ネットワーク>暗号化された接続のスキャン-詳細設定>証明書のインストール>証明書の表示>詳細>ファイルにコピー> Base-64エンコードX.509(.cer)

この問題に対するもう1つの答えを見つけました。

$ git config http.sslVerify false
0
Karthikeyan