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


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

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. Файл system .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
  • Pass --sslcacert, , --sslclientcertkey--sslclientcert. --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
    

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