Поделиться через


Запуск агента с помощью самозаверяющего сертификата

Azure DevOps Server 2022 — Azure DevOps Server 2019

В этом разделе объясняется, как запустить самостоятельно размещенный агент с самозаверяющим сертификатом.

Примечание.

Эта статья относится к версиям агента 2.x и более поздним версиям.

Работа с ssl-сертификатом сервера

Enter server URL > https://corp.tfs.com/tfs
Enter authentication type (press enter for Integrated) >
Connecting to server ...
An error occurred while sending the request.

В журнале диагностики агента показано:

[2017-11-06 20:55:33Z ERR  AgentServer] System.Net.Http.HttpRequestException: An error occurred while sending the request. ---> System.Net.Http.WinHttpException: A security error occurred

Эта ошибка может указывать на то, что сертификат сервера, используемый на сервере TFS, не является доверенным для машины сборки. Убедитесь, что вы устанавливаете самозаверяющий сертификат ssl-сервера в хранилище сертификатов ОС.

Windows: Windows certificate store
Linux: OpenSSL certificate store
macOS: OpenSSL certificate store for agent version 2.124.0 or below
       Keychain for agent version 2.125.0 or above

Вы можете легко проверить правильность установки сертификата, выполнив несколько команд. Всё будет в порядке, пока рукопожатие SSL завершено правильно, даже если вы получите 401 для запроса.

Windows: PowerShell Invoke-WebRequest -Uri https://corp.tfs.com/tfs -UseDefaultCredentials 
Linux: curl -v https://corp.tfs.com/tfs 
macOS: curl -v https://corp.tfs.com/tfs (agent version 2.124.0 or below, curl needs to be built for OpenSSL)
       curl -v https://corp.tfs.com/tfs (agent version 2.125.0 or above, curl needs to be built for Secure Transport)

Если вы каким-то образом не можете установить сертификат в хранилище сертификатов компьютера из-за различных причин, например: у вас нет разрешений или вы находитесь на настроенном компьютере Linux. Агент версии 2.125.0 или выше имеет возможность игнорировать ошибку проверки сертификата SSL-сервера.

Это важно

Это не безопасно и не рекомендуется, мы настоятельно рекомендуем установить сертификат в хранилище сертификатов компьютера.

Передайте --sslskipcertvalidation при настройке агента

./config.cmd/sh --sslskipcertvalidation

Примечание.

Существует ограничение использования этого флага в Linux и macOS
Библиотека libcurl на компьютере Linux или macOS должна быть создана с помощью OpenSSL, дополнительные сведения

Ошибка загрузки исходных файлов Git связана с проблемой SSL-сертификата (только для агента Windows)

Мы отправляем командную строку Git в составе агента Windows. Мы используем эту копию Git для всех операций, связанных с Git. Если у вас есть самоподписанный SSL-сертификат для локального сервера TFS, обязательно настройте предоставленный нами Git, чтобы разрешить этот самоподписанный SSL-сертификат. Существует два подхода к решению проблемы.

  1. Установите следующую конфигурацию Git на глобальном уровне от имени пользователя, под управлением которого работает агент.

    git config --global http."https://tfs.com/".sslCAInfo certificate.pem
    

    Примечание.

    Настройка конфигурации Git уровня системы не является надежной в Windows. Файл `.gitconfig` системы хранится вместе с копией Git, которую мы упаковали, и он будет заменён всякий раз, когда агент обновляется до новой версии.

  2. Позволить git использовать SChannel при конфигурировании с версией агента 2.129.0 или более поздней. Передать --gituseschannel во время конфигурирования агента.

    ./config.cmd --gituseschannel
    

    Примечание.

    В Git SChannel предъявляются более строгие требования к вашему самозаверяющему сертификату. Самоподписанный сертификат, созданный с использованием IIS или команды PowerShell, может быть несовместим с SChannel.

Работа с SSL-сертификатом клиента

Служба IIS имеет параметр SSL, требующий, чтобы все входящие запросы к Azure DevOps Server или TFS содержали сертификат клиента в дополнение к обычным учетным данным.

Если включен параметр SSL IIS, необходимо использовать агент версии 2.125.0 или более поздней версии и выполнить следующие дополнительные действия, чтобы настроить компьютер сборки на сервере Azure DevOps или TFS.

  • Подготовка всех необходимых сведений о сертификате

    • Сертификаты ЦС в формате .pem (это должно содержать открытый ключ и подпись сертификата ЦС, необходимо поместить сертификат корневого ЦС и все промежуточные сертификаты ЦС в один файл .pem).
    • Сертификат клиента в формате .pem (он должен содержать открытый ключ и подпись сертификата клиента)
    • Закрытый ключ сертификата клиента в формате .pem (этот ключ должен содержать только закрытый ключ сертификата клиента).
    • Пакет архива сертификата клиента в формате .pfx (он должен содержать подпись, открытый ключ и закрытый ключ сертификата клиента).
    • Используйте пароль SAME для защиты закрытого ключа сертификата клиента и пакета архива сертификата клиента, так как у них есть закрытый ключ сертификата клиента.
  • Установка сертификата(ов) центра сертификации в хранилище сертификатов компьютера

    • Linux: хранилище сертификатов OpenSSL
    • macOS: цепочка ключей системы или пользователя
    • Windows: хранилище сертификатов Windows
  • Передайте --sslcacert, --sslclientcert, --sslclientcertkey. --sslclientcertarchive и --sslclientcertpassword во время настройки агента.

    .\config.cmd/sh --sslcacert ca.pem --sslclientcert clientcert.pem --sslclientcertkey clientcert-key-pass.pem --sslclientcertarchive clientcert-archive.pfx --sslclientcertpassword "mypassword"
    

    Пароль закрытого ключа сертификата клиента безопасно хранится на каждой платформе.

    Linux: Encrypted with a symmetric key based on the machine ID
    macOS: macOS Keychain
    Windows: Windows Credential Store
    

Дополнительные сведения о поддержке сертификата клиента агента см. в.