2017-02-16 60 views
7

Мы используем внутренний сертификат на нашем сервере, и я последовал за шагами вTFS сборки Агент не в состоянии подключиться к HTTPS мерзавца в 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 
.

При работе с тем же агентом конфигурации, но с использованием \ 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

Я использую TFS 2017 Update 1 RC2 с февраля 13-2017 (https://www.visualstudio.com/en-us/news/releasenotes/tfs2017-update1), то предыдущая версия не позволяла нашему агенту сборки вообще подключаться к tfs https должным образом. Наш старый агент сборки TFS 2015 по-прежнему работает, но не хватает новых функций от агентов v2.

Edit: Использование set HTTP_PROXY=https://localhost:8888 я смог VSTS использовать скрипача в качестве прокси-сервера, и он сделал один запрос:

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

Вы перезапустили службу сборки после выполнения шагов в ссылке? И аналогичная проблема здесь: https://github.com/Microsoft/vsts-agent/issues/688 –

+0

@ Eddie-MSFT Да, я перезапустил весь этот сервер несколько раз, пытаясь заставить его работать: (Да, я видел которые ссылаются раньше и пытались сделать то же самое, что у них есть, также, как я оказался в блоге в своем OP.Я хочу, чтобы установка SSL_Verify на false работала бы, поскольку ее внутренняя я действительно не забочусь о SSL, мы только включили его, потому что агент сборки был необходим, в первую очередь, для использования PAT или других типов auth. – John

ответ

1

Итак, я нашел лучшую команду, чем отключить проверку https во всем мире, надеюсь, хотя это будет лучше обрабатываться в будущих обновлениях агента сборки.

мерзавец конфигурации --global HTTP. «https://YOURTFS.SERVER.HERE:PORT/» .sslVerify ложные

Это будет только отключить его от проверки на вашем (надеюсь, внутренний) сервер мерзавца.

0

Поскольку вы не можете вручную используя учетную запись агента сборки для запуска команды. Пожалуйста, дважды проверьте, не изменили ли вы или ваши товарищи разрешение на «учетную запись« Project Collection Build Service ». Если у вас его нет, добавьте его.

enter image description here

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

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

+0

У службы сборки есть разрешения на чтение. Агент сборки работает при запуске под моими учетными данными при запуске из команды, но не тогда, когда используя мои учетные данные в качестве службы (как для входа в систему, так и для работы в качестве службы). При попытке устранить эту проблему я даже установил учетную запись сборки «tfsbuild» в качестве администратора сборки и проекта. последний агент сборки с github (2.112.0). Какая информация о диагностике woul d помочь? – John

+0

@John Поскольку проблема связана с подключением, вы можете попробовать использовать скрипач, чтобы отслеживать соответствующую информацию. Кроме того, проверьте информацию о событии на сервере сборки, если есть какая-либо полезная информация. Вы также можете создать пустое определение сборки для теста, чтобы сузить влияние задачи построения. –

+1

Patrick, я пытался использовать fiddler, но даже при использовании установки vsts 'set VSTS_HTTP_PROXY = https: //127.0.0.1: 8888' fiddler не смог захватить мой трафик при использовании агента run.cmd. Хотя теперь смотрю на исходный код, я вижу, что он мог быть переименован в «HTTP_PROXY», поэтому документы могут быть устаревшими. https://github.com/Microsoft/vsts-agent/blob/master/docs/troubleshooting.md. Я попробую это завтра и посмотрю, не проливает ли свет на проблему ... было бы неплохо, если бы этот сервер сборки работал без необходимости вручную входить в систему и запускать процесс. – John

1

Я столкнулся с этой проблемой. Вы уверены, что обновили правильный заказной магазин? Тот, что находится в каталоге агента \ externals \ git \ mingw64 \ ssl \ certs \ ca-bundle.crt? Это похоже на то, что агент использует в наши дни.Поэтому, несмотря на то, что ваша система git может работать нормально, агент не будет использовать ее и, таким образом, не будет доверять вашему самоподписанному сертификату SSL.

обновление: если это не слишком, вы можете попробовать запустить git.exe там и установив флаг sslVerify ложь, например:

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

+0

Обновление, которое по-прежнему не было, но я смог запустить 'C: \ agent \ externals \ git \ cmd \ git.exe config --global http.sslVerify false', который работает DID, хотя я ранее делал это из обычного git-пути и тестировал его с помощью 'git config -list', показав его отключенным. Если вы хотите добавить эту команду в свой ответ, я помечаю ее как решение, так как это привело меня к решению – John

+0

Странно! Из-за этого я закончил использовать правильный SSL-сертификат на большинстве наших серверов, потому что было дешевле сделать это, чем запомнить это и постоянно менять его ;-) – Peter

+0

Что значит правильный SSL-сертификат? Платный? Мы пытались использовать его из нашего внутреннего CA, но его явно не очень хорошо работали;) – John

1

У меня есть внутренне выданный сертификат (не само- подписанный) для TFS. Вот шаги, которые я взял, чтобы получить эту работу для моего сценария:

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

EDIT: Я также запускаю агент под учетной записью домена службы построения.

2

Это то, что я сделал для решения проблемы.

  • Скачать последние GIT из https://git-scm.com/downloads

  • Во время установки установки, выберите хранилище сертификатов Windows для SSL.

  • Перейти к программному файлу и скопировать последнюю папку GIT.

  • Замените папку git внутри агента/внешних с последней папкой GIT .

  • Перезапустите агента и создайте снова.

+0

Спасибо, человек! Ты спас мой бекон :) – andrecarlucci

1

со смертельным исходом: не удалось открыть < сервера >: проблемы сертификата SSL: не удалось получить информацию о местных эмитенту

Иногда, выполнив следующую команду появляется работать , но это не имеет!

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

Чтобы проверить, что я имею в виду запускаю это:

git config --list --show-origin 

Это будет список всех файлов 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 ча-пачке: 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