web-dev-qa-db-ja.com

Visual Studio 2017 Enterprise + TFS 2018 + Git Clone =ローカル発行者証明書を取得できません

私はGitとやり取りするのが初めてで、GitをTFSインフラストラクチャと組み合わせようとしていますが、SSL認証の問題が発生しています。 Github、VSTSはありません。 TFSはオンプレミスであるため、ローカルインストールです。

サーバー部分:

Windows Server 2016にTFS 2018をインストールし、企業の自己署名証明書を作成し、その証明書にTFS Webサービス(IISマネージャー)をバインドしました。

TFSは、HTTPSを介してのみ実行するように構成されています。 HTTPはHTTPSにリダイレクトされます。バージョン管理システムとしてGitを使用する新しいプロジェクトをセットアップしました。

クライアント部分:

2種類のWindowsクライアントがあります。 Windows 7 SP1および10 Anniversary Update、両方ともVisual Studio 2017 Enterpriseを使用。

証明書を(信頼されたルート証明機関として)インストールし、ブラウザーを介して接続しますが、プロジェクト情報を表示するものはまったくありません。ブラウザーは、証明書の信regarding性に関する警告を発しません。次に、Windows Secure Channel Libraryを使用してGit-2.15.1.2-64-bit.exeをインストールしました。

タイトルの致命的なエラーが発生していたため、Gitクライアントを構成するために ガイド に従いました。したがって、基本的には自己署名のコンテンツを抽出し、ca-bundle.crtファイルに追加しました。それらのすべて:

  • C:/ Program Files/Git/mingw64/ssl/certs /
  • C:\ users\myname(ガイドが言うようにグローバルなものとして作成されます)
  • C:\ Program Files(x86)\ Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\mingw32\ssl\certs(これはVisual Studio 2017のインストールによって作成されます)

Powershellの「git config --list --show-Origin」コマンドを使用すると、次のリストが表示されます。file: "C:\ Program Files\Git\mingw64/etc/gifconfig" http.sslcainfo = C:/ Program Files/Git/mingw64/ssl/certs/ca-bundle.crtファイル:「C:/users/myname/.gifconfig」http.sslcainfo = C:/users/myname/ca-bundle.crt

VS2017 Team Explorerパネルからリポジトリをクローンしようとすると、「Gitは致命的なエラーで失敗しました。fatal:アクセスできません」 https://tfs.blahblah/ = ':SSL証明書の問題:ローカル発行者証明書を取得できません "

しかし、Git GUIを使用すると、別のエラーで応答します:fatal:リモート参照HEADが見つかりませんでした。

しかし、Visual Studio 2017と「ペアリング」できない場合は、何もコミットできません。

いくつかのリンクを読みましたが、それを取得できませんでした。そのため、複製としてマークする前に、特定のシステム/環境要件に注意してください。

注:そして、SSLをオフにすることを提案しないでください。すでに話したようには、企業/企業環境

11
DioBrando

チームエクスプローラーの[グローバル設定]の[Git設定]には、OpenSSLとセキュアチャネルのいずれかを選択するオプションがあります。

Visual Studio 2017(バージョン15.7プレビュー3)以降、Git Global設定でSChannelを使用すると問題が修正されました。

12
Anoj

システム管理者サポートの2日後、私は解決策を得ました。他の人に役立つかもしれないので、ここに投稿します。 Visual Studio 2017は、エラー状態(「ローカル発行者の何とか」)のため、自己署名証明書を受け入れないようです。承認するには、ローカルCAである必要があります。手順は次のとおりです。

サーバー:

  1. 信頼できる機関のルートとしてTFSマシンにCompany/Trusted CAをインストールします
  2. TFS用の証明書を準備し、会社/信頼されたCAから派生させる。
  3. TFSマシンに信頼できる機関のルートとしてインストールします
  4. TFS証明書をHTTPS接続に必須にするために、TFS-IISバインディングを構成する

クライアント:

  1. クライアントコンピューターにCA証明書を信頼された機関のルートとしてインストールする(Windows 7および10で試用)
  2. TFS証明書を信頼できる機関のルートとしてクライアントマシンにインストールします(ブラウザでロックが表示され、それを介して接続することは安全であると認識される必要があります)
  3. Gitクライアントをインストールします(Git-2.15.1.2-64ビットがあります)。
  4. シェル(cmd、Powershell、Git-bashを好み)を実行し、次のコマンドをデジットします:git config --global http.sslCAInfo C:/Users//ca-bundle.crt(GitとVisual Studioには複数のフォルダーがあるため証明書を保存すると、基本的に両方のグローバルパスを作成します)
  5. これで、[http] sslCAInfo = C:/Users//ca-bundle.crtという内容の新しい.gitconfigファイルが表示されるはずです。
  6. コマンド「git config --list --show-Origin」をデジットすると、追加された新しいパス/構成が表示されます。
  7. Ca-bundle.crtをC:\ Program Files\Git\mingw64\ssl\certsパスからC:/ Users //パスにコピーします
  8. CA証明書をBase 64 X.509(.CER)としてパスまでエクスポートします(IEインターネットオプション/コンテンツ/証明書)から証明書を表示できます)。
  9. Notepad ++などのエディターまたはエクスポートしたばかりのCA証明書で開きます。コンテンツは-----BEGIN CERTIFICATE-----publickey-----END CERTIFICATE-----
  10. このコンテンツをコピー
  11. C:/Users//ca-bundle.crtを開き、そのコンテンツを追加して貼り付けます
  12. TFS証明書をBase 64 X.509(.CER)としてパスまでエクスポートします。
  13. お好みのエディターで開き、コンテンツをコピーします
  14. C:/Users//ca-bundle.crtを開き、そのコンテンツを追加して貼り付けます
  15. ファイルを保存する

これで、リポジトリのクローンを作成できるはずです。

したがって、基本的には、証明書にはすべてのチェーン機関が含まれている必要があり、1つある必要がありますです。

13
DioBrando

次の方法で簡単な回避策を実行できます。

git config --global http.sslVerify false

参照: https://confluence.atlassian.com/bitbucketserverkb/ssl-certificate-problem-unable-to-get-local-issuer-certificate-816521128.html

3
user9371102