我们在服务器上使用内部证书,并且我已按照
中的步骤操作以及这里的步骤:
作为服务运行时出错:
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安装了证书,以便按照第二篇博文发布。
我可以手动下拉项目,也可以使用git clone https://ourtfsserver:8443/tfs/path/_git/project c:\somefolder
我正在使用TFS 2017 Update 1 RC2 2017年2月13日(https://www.visualstudio.com/en-us/news/releasenotes/tfs2017-update1),之前的版本不会让我们的构建代理连接到tfs https。我们的旧TFS 2015构建代理仍然有效,但缺少v2代理的新功能。
编辑:使用set HTTP_PROXY=https://localhost:8888
我能够让VSTS使用fiddler作为代理,并提出了一个请求:
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.
答案 0 :(得分:3)
这就是我解决这个问题的方法。
在安装设置期间,选择SSL的Windows证书存储区。
转到程序文件并复制最新的GIT文件夹。
用最新的GIT替换agent / externals中的git文件夹 文件夹中。
重新启动代理并重新构建。
答案 1 :(得分:2)
我也遇到了这个问题。您确定更新了正确的自定义信任存储吗?代理目录\ externals \ git \ mingw64 \ ssl \ certs \ ca-bundle.crt中的那个?这似乎是代理人现在使用的那个。因此,即使您的系统git工作正常,代理也不会使用它,因此不会信任您的自签名SSL证书。
更新:如果失败,你可以尝试在那里运行git.exe并将sslVerify标志设置为false,例如:
{{1}}
答案 2 :(得分:2)
所以我找到了比全局禁用https验证更好的命令,希望尽管在未来的构建代理更新中可以更好地处理它。
git config --global http。“https://YOURTFS.SERVER.HERE:PORT/”。sslVerify false
这只会禁用它来验证您的(希望是内部的)git服务器。
答案 3 :(得分:1)
我有一个内部颁发的TFS证书(非自签名)。以下是为实现我的方案而采取的步骤:
之后,我按照here的指示设置了git配置。这个命令看起来像这样:
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"
我做的最后一件事是重启代理服务,之后一切都很好。
编辑:我也在构建服务域帐户下运行代理。
答案 4 :(得分:1)
致命:无法访问< server>:SSL证书问题:无法获取本地发行人
有时会运行以下命令 以使用但它没有!
C:\agent\externals\git\cmd\git.exe config --global http.sslVerify false
要检查我的意思,请运行:
git config --list --show-origin
这将列出PC上的所有Git Config文件。
对我来说有用的是检查 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在Gits ca-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
答案 5 :(得分:0)