サーバーで内部証明書を使用しており、次の手順に従いました
ここでの手順と同様に:
サービスとして実行中のエラー:
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.
そのため、https検証をグローバルに無効にするよりも優れたコマンドを見つけましたが、ビルドエージェントの将来の更新でこれがより適切に処理されることを願っています。
git config --globalhttp。 " https://YOURTFS.SERVER.HERE:PORT/ " .sslVerify false
これにより、(できれば内部の)gitサーバーでの検証が無効になるだけです。
これは私が問題を解決するためにしたことです。
最新のGITを https://git-scm.com/downloads からダウンロードします
インストールのセットアップ中に、SSL用のWindows証明書ストアを選択します。
Program Filesに移動し、最新のGITフォルダーをコピーします。
Agent/externals内のgitフォルダーを最新のGITフォルダーに置き換えます。
エージェントを再起動して、再度ビルドします。
私もこの問題に遭遇しました。正しいカスタムトラストストアを更新しましたか?エージェントディレクトリ\ 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
致命的:<サーバー>にアクセスできません:SSL証明書の問題:ローカル発行者を取得できません
次のコマンドを実行するとが機能するように見えるしかし、機能しない!
C:\agent\externals\git\cmd\git.exe config --global http.sslVerify false
私が何を意味するかを確認するには、これを実行します。
git config --list --show-Origin
これにより、PC上のすべてのGitConfigファイルが一覧表示されます。
私のために働いたのはc:\ ProgramData/Git/configファイルをチェックすることです。
私は自分の(改行とタブ)をフォーマットし、手動でsslVerifyとsslCAInfoを追加する必要がありました(この環境では何らかの理由で設定されていませんでした)。
[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
TFS用に内部で発行された証明書(自己署名ではない)を持っています。これを私のシナリオで機能させるために行った手順は次のとおりです。
その後、 ここ の指示に従って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"
私が最後にしたことは、エージェントサービスを再起動することでしたが、その後はすべて問題ありませんでした。
編集:私はまた、ビルドサービスドメインアカウントでエージェントを実行しています。