web-dev-qa-db-ja.com

サービスとして実行しているときにTFS2017でTFSビルドエージェントがHTTPSgitに接続できない

サーバーで内部証明書を使用しており、次の手順に従いました

https://blogs.msdn.Microsoft.com/tfssetup/2016/12/19/error-ssl-certificate-problem-unable-to-get-local-issuer-certificate/

ここでの手順と同様に:

https://blogs.msdn.Microsoft.com/phkelley/2014/01/20/adding-a-corporate-or-self-signed-certificate-authority-to-git-exes-store/ ==

サービスとして実行中のエラー:

git version
git config --get remote.Origin.url
git config gc.auto 0
git config --get-all http.https://ourtfsserver:8443/tfs/path/_git/project.extraheader
git config --get-all http.proxy
git -c http.extraheader="AUTHORIZATION: bearer ********" fetch --tags --Prune --progress Origin
fatal: unable to access 'https://ourtfsserver:8443/tfs/path/_git/project/': SSL certificate problem: unable to get local issuer certificate
##[error]Git fetch failed with exit code: 128

同じエージェント構成で実行しているが、サービス(同じ資格情報)としてではなく。\ run.cmdを使用している場合、正常に機能します。

git version
git config --get remote.Origin.url
git config gc.auto 0
git config --get-all http.https://ourtfsserver:8443/tfs/path/_git/project.extraheader
git config --get-all http.proxy
git -c http.extraheader="AUTHORIZATION: bearer ********" fetch --tags --Prune --progress Origin
git checkout --progress --force {hash here}
(and continues onto next steps)

ただし、ビルドエージェントアカウントを使用して手動で実行しようとすると、上記と同じGit fetch failed with exit code: 128が表示されます。ただし、これらの資格情報を使用して手動でgit cloneすることはできます。

だから私は試しました:

git config –global http.sslVerify false

また、その変数を含めるように構成ファイルを手動で設定します。

また、IEを使用して証明書をインストールし、2番目のブログ投稿ごとに取得しました。

git clone https://ourtfsserver:8443/tfs/path/_git/project c:\somefolderを使用して、自分のアカウントとビルドエージェントアカウントの両方で、問題なくプロジェクトを手動でプルダウンできます。

2017年2月13日からTFS2017 Update 1 RC2を使用しています( https://www.visualstudio.com/en-us/news/releasenotes/tfs2017-update1 )、以前のバージョンでは使用できませんでした。ビルドエージェントをtfshttpsに正しく接続させます。古いTFS2015ビルドエージェントは引き続き機能しますが、v2エージェントの新機能がありません。

編集:set HTTP_PROXY=https://localhost:8888を使用してVSTSにフィドラーをプロキシとして使用させることができ、1つのリクエストを行いました:

CONNECT our.local.tfs.fqdn:8443 HTTP/1.1
Host: our.local.tfs.fqdn:8443
User-Agent: git/2.10.0 (vsts-agent-git/2.112.0)

A SSLv3-compatible ClientHello handshake was found. Fiddler extracted the parameters below.

Version: 3.3 (TLS/1.2)
(bunch of other stuff it decrypted here)

authの場合:

No Proxy-Authorization Header is present.

No Authorization Header is present.
8
John

そのため、https検証をグローバルに無効にするよりも優れたコマンドを見つけましたが、ビルドエージェントの将来の更新でこれがより適切に処理されることを願っています。

git config --globalhttp。 " https://YOURTFS.SERVER.HERE:PORT/ " .sslVerify false

これにより、(できれば内部の)gitサーバーでの検証が無効になるだけです。

2
John

これは私が問題を解決するためにしたことです。

  • 最新のGITを https://git-scm.com/downloads からダウンロードします

  • インストールのセットアップ中に、SSL用のWindows証明書ストアを選択します。

  • Program Filesに移動し、最新のGITフォルダーをコピーします。

  • Agent/externals内のgitフォルダーを最新のGITフォルダーに置き換えます。

  • エージェントを再起動して、再度ビルドします。

3
j.f.

私もこの問題に遭遇しました。正しいカスタムトラストストアを更新しましたか?エージェントディレクトリ\ externals\git\mingw64\ssl\certs\ca-bundle.crtにあるもの?これは、エージェントが最近使用しているもののようです。したがって、システムgitが正常に機能している場合でも、エージェントはそれを使用しないため、自己署名SSL証明書を信頼しません。

更新:それも失敗した場合は、そこでgit.exeを実行し、sslVerifyフラグをfalseに設定してみてください。例:

C:\agent\externals\git\cmd\git.exe config --global http.sslVerify false

2
Peter

致命的:<サーバー>にアクセスできません:SSL証明書の問題:ローカル発行者を取得できません

次のコマンドを実行するとが機能するように見えるしかし、機能しない!

C:\agent\externals\git\cmd\git.exe config --global http.sslVerify false

私が何を意味するかを確認するには、これを実行します。

git config --list --show-Origin

これにより、PC上のすべてのGitConfigファイルが一覧表示されます。

私のために働いたのはc:\ ProgramData/Git/configファイルをチェックすることです。

私は自分の(改行とタブ)をフォーマットし、手動でsslVerifysslCAInfoを追加する必要がありました(この環境では何らかの理由で設定されていませんでした)。

[core]  
    symlinks = false  
    autocrlf = true  
    fscache = true  
[color]  
    diff = auto  
    status = auto  
    branch = auto  
    interactive = true  
[pack]  
[help]  
    format = html  
[http]  
    sslVerify = false  
    sslCAInfo = C:/Program Files (x86)/Microsoft Visual 
Studio/2017/Enterprise/Common7/IDE/CommonExtensions/Microsoft/TeamFoundation/Team Explorer/Git/mingw32/ssl/certs/ca-bundle.crt  
[diff "astextplain"]  
    textconv = astextplain  
[rebase]  
    autosquash = true  

これにより、サービスアカウント(ログイン権限なし)がGitリポジトリにアクセスできるようになります。

VS2017がGitsca-bundleでうまく機能しないことを学びました: https://developercommunity.visualstudio.com/content/problem/48517/visual-studio-2017-ssl-certificate-problem-unale-t .html

これの代わりに:

sslcainfo = C:/Program Files/Git/mingw64/ssl/certs/ca-bundle.crt

私はこれを使用します:

sslCAInfo = C:/Program Files (x86)/Microsoft Visual 
    Studio/2017/Enterprise/Common7/IDE/CommonExtensions/Microsoft/TeamFoundation/Team Explorer/Git/mingw32/ssl/certs/ca-bundle.crt  

明らかに、これを実行するときは削除してくださいsslVerify = false

1
Jeremy Thompson

TFS用に内部で発行された証明書(自己署名ではない)を持っています。これを私のシナリオで機能させるために行った手順は次のとおりです。

  1. このガイド のステップ1に従い、エクスポートされた証明書をcertsフォルダーにドロップしました。これはE:\ agent\1\externals\git\mingw64\ssl\certsのようになります。
  2. その後、 ここ の指示に従ってgitconfigを設定しました。そのためのコマンドは次のようになりました。

    git config --global http."https://tfs/tfs/".sslCAInfo "path\to\cert\certificate.cer"
    git config --system http."https://tfs/tfs/".sslCAInfo "path\to\cert\certificate.cer"
    
  3. 私が最後にしたことは、エージェントサービスを再起動することでしたが、その後はすべて問題ありませんでした。

編集:私はまた、ビルドサービスドメインアカウントでエージェントを実行しています。

1

ビルドエージェントアカウントを使用してコマンドを手動で実行することはできないため。あなたまたはあなたの仲間が「プロジェクトコレクションビルドサービス」アカウントの権限を変更したことがあるかどうかを再確認してください。お持ちでない場合は追加してください。

enter image description here

また、ビルドエージェントのバージョンを確認し、最新に更新されていることを確認してください。この代わりに別の新しいビルドエージェントを使用して、問題を絞り込むことができます。

上記で問題を特定できなかった場合は、Fiddlerトレースを提供するなど、さらに診断情報が必要になる場合があります。

0
PatrickLu-MSFT