Агент сборки TFS не удается подключиться к HTTPS git в TFS 2017 при запуске как служба

мы используем внутренний сертификат на нашем сервере, и я следовал инструкциям

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

при работе с той же конфигурацией агента, но с использованием .работать.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. я следовал шагу 1 данное руководство, затем сбросил экспортированный сертификат в папку certs, которая выглядела примерно так: E:\agent\1\externals\git\mingw64\ssl\certs - ...
  2. после этого я последовал указаниям здесь для установки конфигурации 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"
    
  3. последнее, что я сделал, это перезапустил службу агента, и после этого все было в порядке.

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


Так как вы не можете вручную использовать учетную запись агента сборки для запуска команды. Пожалуйста, дважды проверьте, если вы или ваши товарищи когда-либо изменяли разрешение на "Служба Сборки Коллекции Проектов аккаунт". Если у вас нет, пожалуйста, добавьте один.

enter image description here

также подтвердите версию Агента сборки, убедитесь, что обновлены до последней версии. Вы можете использовать другой новый агент сборки вместо этого, чтобы сузить проблему.

Если выше не удалось выяснить проблему, вам может понадобиться дополнительная диагностическая информация, например, дать трассировку скрипача.