私はWindows上でgitを使っています。 msysgitパッケージをインストールしました。私のテストリポジトリはサーバーに自己署名証明書を持っています。 httpを使用して問題なくリポジトリにアクセスして使用できます。 httpsに移動すると、「SSL証明書の問題:ローカル発行者証明書を取得できません」というエラーが表示されます。
クライアントマシンのWindows 7の信頼されたルート証明機関に自己署名証明書をインストールしました。 Internet ExplorerでhttpsリポジトリのURLをエラーメッセージなしで参照できます。
このブログ http://blogs.msdn.com/b/phkelley/archive/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exe-s- store.aspx curlはクライアントマシンの証明書ストアを使用しないと説明しました。私はブログ投稿のアドバイスに従って、curl-ca-bundle.crtのプライベートコピーを作成し、それを使用するようにgitを設定しました。私はgitが私のコピーを使っていると確信しています。コピーの名前を変更した場合gitはファイルが見つからないと文句を言います。
私は自分の証明書に貼り付けました。ブログの投稿で述べたように、「ローカル発行者証明書を取得できません」というメッセージが表示されます。
HttpsでGitHubリポジトリを複製して、gitがまだ機能していることを確認しました。
私がブログ投稿と違うのは、私の証明書ISルートです - それに到達するための連鎖がないことだけです。私の証明書は、もともとIIS 8 IISマネージャのリンク「自己署名証明書の作成」をクリックしたものです。たぶんそれは証明書がcurlが期待するものと何らかの点で異なるものにする。
Git/curlに自己署名証明書を受け付けるにはどうすればいいですか?
この質問に対する回答 開発用SSLにmakecertを使用すること これを修正しました。
理由はわかりませんが、IIS Managerの単純な[自己署名証明書の作成]リンクで作成された証明書ではうまくいきません。自己署名CAルートを作成してインストールするという、リンクされた質問のアプローチに従いました。それからそれを使って私のサーバーのサーバー認証証明書を発行します。両方ともIISにインストールしました。
それは私の状況が元の質問で参照されたブログ投稿と同じになることを意味します。ルート証明書がcurl-ca-bundle.crtにコピー/ペーストされると、git/curlコンボは満たされました。
SSL検証を完全に無効にしたい場合は、Git Bashを開いてコマンドを実行してください。
git config --global http.sslVerify false
注:この解決策は中間者攻撃のような攻撃にあなたを開くかもしれません 。そのため、できるだけ早く検証を再度有効にしてください。
git config --global http.sslVerify true
私もこの問題を抱えていました。私の場合は、プッシュごとにサーバー上の作業コピーを更新するための受信後Gitフックを取得しようとしていました。リンクしているブログの指示に従ってみました。私にとってもうまくいかなかったし、ユーザーごとに設定を上書きしてもうまくいかないようだった。
結局私がしなければならなかったのはGit全体のために(記事が言及するように)SSL検証を無効にすることでした。完璧な解決策ではありませんが、より良い解決策が見つかるまでうまくいきます。
次の場所にあるGit configテキストファイル(Notepad ++のような私のお気に入りの行末ニュートラルアプリを含む)を編集しました。
C:\ Program Files(x86)\ Git\etc\gitconfig
[http]ブロックに、sslVerifyを無効にするオプションを追加しました。私が終わったとき、それはこのように見えました:
[http]
sslVerify = false
sslCAinfo = /bin/curl-ca-bundle.crt
それがトリックでした。
注: これはSSL検証を無効にするため、長期的な解決策としてはお勧めできません。
問題は、gitがデフォルトで「Linux」暗号化バックエンドを使用していることです。
Git for Windows 2.14以降、組み込みのWindowsネットワークレイヤーであるSChannelを暗号化バックエンドとして使用するようにGitを構成できるようになりました。これは、Windows証明書ストレージメカニズムを使用し、curl CAストレージメカニズムを明示的に構成する必要がないことを意味します。 https://msdn.Microsoft.com/en-us/library/windows/desktop/ aa380123(v = vs.85).aspx
実行するだけです:
git config --global http.sslbackend schannel
それが役立つはずです。
Schannelを使用することは、Windows用のgitをインストールする際の標準設定になりました。また、可能であれば、SSHでリポジトリをチェックアウトしないことをお勧めします。
kiddailey 私はかなり近いと思いますが、私はssl検証を無効にするのではなく、ローカル証明書を提供するだけです。
Git設定ファイル内
[http]
sslCAinfo = /bin/curl-ca-bundle.crt
またはコマンドラインから:
git config --global http.sslCAinfo /bin/curl-ca-bundle.crt
私もこの問題に直面しました。そして最後に このMSDNブログ からの指導を受けることで解決しました。
更新
実際にはGitの証明書ファイルcurl-ca-bundel.certにGit\binディレクトリにある証明書を追加する必要があります。
ステップ
最後にステータスを確認してください。 安全のため、編集前にバックアップcurl-ca-bundle.crtファイルを保存してください。
Ssl検証を完全に無効にしたり、gitによって使用されるバンドルされたCA証明書ファイルを複製/ハッキングすることを回避するために、 ホストの証明書チェーンをファイルにエクスポート してgitに使用させることができます。
git config --global http.https://the.Host.com/.sslCAInfo c:/users/me/the.Host.com.cer
それでもうまくいかない場合は、ホストに対してSSL検証 only を無効にすることができます。
git config --global http.https://the.Host.com/.sslVerify false
注:SSL検証がオフになっていると、中間者攻撃の可能性があります。
私はちょうど同じ問題を抱えていましたが、ウィンドウズ上のソースツリーの使用ウィンドウズ上の通常のGITについても同じステップです。以下の手順に従って、私はこの問題を解決することができました。
これで、自己署名証明書とGITを使用して問題を解決するはずです。
"http.sslcapath"設定を使用しようとしましたが、これはうまくいきませんでした。また、証明書ファイルにチェーン全体を含めなかった場合も、これは失敗します。誰かがこれらについてのポインタを持っているならば、上記が新しいインストールのために繰り返されなければならないので私に知らせてください。
これがシステムGITであるならば、あなたはシステムGITを使用するためにツール - >オプションGItタブのオプションを使用することができ、これはそれからsourcetreeの問題も解決します。
私は以前にこの問題を抱えており、次の設定を使ってそれを解決します。
[http "https://your.domain"] sslCAInfo=/path/to/your/domain/priviate-certificate
Git 2.3.1以降、次の証明書がそれ専用であることを示すためにhttpの後にhttps://your.domain
を置くことができます。
C:\Program Files\Git\bin
とC:\Program Files\Git\mingw64\bin
に追加それでは、次のようにしてください。git clone https://github.com/heroku/node-js-getting-started.git
私がめちゃくちゃになったことの1つは、パスの形式です(私のWindows PC上)。私はもともとこれを持っていました:
git config --global http.sslCAInfo C:\certs\cacert.pem
しかし、それは「ローカル発行者証明書を取得できない」というエラーで失敗しました。
最後にうまくいったのはこれです。
git config --global http.sslCAInfo "C:\\certs\\cacert.pem"