Агент сборки TFS не удается подключиться к HTTPS git в TFS 2017 при запуске как служба
мы используем внутренний сертификат на нашем сервере, и я следовал инструкциям
а также шаги здесь:
ошибка при запуске как сервиса:
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
при работе с той же конфигурацией агента, но с использованием .работать.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 config –global http.sslVerify false
а также вручную установить файл конфигурации, чтобы включить это переменная.
Я также установил сертификат с помощью IE, чтобы получить его за 2-е сообщение в блоге.
Я могу вручную вытащить проект без проблем, а также, как моя учетная запись и наша учетная запись агента сборки с помощью git clone https://ourtfsserver:8443/tfs/path/_git/project c:somefolder
Я использую обновление TFS 2017 1 RC2 от 13 февраля 2017 (https://www.visualstudio.com/en-us/news/releasenotes/tfs2017-update1), предыдущая версия не позволила бы нашему агенту сборки подключиться вообще к TFS https должным образом. Наш старый TFS 2015 build agent все еще работает, но не хватает новых функций от агентов v2.
Edit: Использование 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.
6 ответов
Это то, что я сделал, чтобы решить проблему.
Загрузить последнюю версию GIT изhttps://git-scm.com/downloads
во время установки выберите хранилище сертификатов Windows для SSL.
перейдите в Program files и скопируйте последнюю папку GIT.
замените папку git внутри агента/externals на последнюю версию GIT папка.
перезапустить агент и строить заново.
поэтому я нашел лучшую команду, чем отключение проверки https глобально, надеюсь, хотя это будет лучше обрабатываться в будущих обновлениях агента сборки.
git config --глобальный http."https://YOURTFS.СЕРВЕР.ЗДЕСЬ: PORT/".sslVerify false
Это только отключит его от проверки на вашем (надеюсь, внутреннем) сервере git.
У меня есть внутренний сертификат (не самозаверяющий) для TFS. Вот шаги, которые я предпринял, чтобы заставить это работать для моего сценария:
- я следовал шагу 1 данное руководство, затем сбросил экспортированный сертификат в папку certs, которая выглядела примерно так: E:\agent\1\externals\git\mingw64\ssl\certs - ...
-
после этого я последовал указаниям здесь для установки конфигурации 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"
последнее, что я сделал, это перезапустил службу агента, и после этого все было в порядке.
EDIT: я также запускаю агент под учетной записью домена службы сборки.
я столкнулся с этой проблемой. Вы уверены, что обновили правильный пользовательский trust-store? Тот, который находится в каталоге агента \externals\git\mingw64\ssl\certs\ca-bundle.ЭЛТ ? Кажется, это тот, который агент использует в настоящее время. Поэтому, даже если ваша система git может работать нормально, агент не будет использовать это и, следовательно, не будет доверять вашему самозаверяющему SSL-сертификату.
update: если это тоже не удается, вы можете попробовать запустить git.exe там и установка флага sslVerify в false, например:
C:\agent\externals\git\cmd\git.exe config --global http.sslVerify false
fatal: не удается получить доступ к : SSL-сертификат проблема: не удается получить локальный эмитент
иногда выполняется следующая команда появляется для работы но это не так!
C:\agent\externals\git\cmd\git.exe config --global http.sslVerify false
чтобы проверить, что я имею в виду работать так:
git config --list --show-origin
это будет список всех файлов конфигурации Git на ПК.
то, что сработало для меня, - это проверка 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
Так как вы не можете вручную использовать учетную запись агента сборки для запуска команды. Пожалуйста, дважды проверьте, если вы или ваши товарищи когда-либо изменяли разрешение на "Служба Сборки Коллекции Проектов аккаунт". Если у вас нет, пожалуйста, добавьте один.
также подтвердите версию Агента сборки, убедитесь, что обновлены до последней версии. Вы можете использовать другой новый агент сборки вместо этого, чтобы сузить проблему.
Если выше не удалось выяснить проблему, вам может понадобиться дополнительная диагностическая информация, например, дать трассировку скрипача.