Рейтинг:0

GitLab Runner для сервера GitLab с сертификатом, подписанным центром сертификации, сбой: самозаверяющий сертификат в цепочке сертификатов

флаг md

Моя компания сменила центр сертификации (это был один центр сертификации, а теперь у нас есть корневой центр сертификации и промежуточный центр сертификации). Я успешно изменил конфигурацию в экземпляре GitLab и перешел к бегуну (то есть в Ubuntu 18.04.5 LTS). Я пытался следовать Документы GitLab безуспешно.

Я следовал подходу по умолчанию здесь в котором говорится «По умолчанию — прочитать системный сертификат», поэтому я добавил сертификаты (CA и Intermediate) в список CA Ubuntu. Вроде все заработало, потому что бегун появился в GitLab.

Я запускаю работу и получаю:

Работа с gitlab-runner 11.5.0 (3afdaba6)
  на RUN01 12ccbb74
Использование исполнителя Docker с изображением node:latest ...
Вытягивание узла образа докера: последний...
Использование образа докера sha256:ab773999a02271b25a9f3bce46018fc3ad46a7f922a5e3e8712b6d1c7087c415 для node:latest...
Запуск на runner-12ccbb74-project-73-concurrent-0 через (...)...
00:02
Получение изменений...
00:01
HEAD теперь находится на 60b6860 Обновить зависимость mocha до v9
фатально: невозможно получить доступ к 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxx@(...).git/': проблема с сертификатом SSL: невозможно получить сертификат эмитента
ОШИБКА: задание не выполнено: код выхода 1

Затем я добавил (в экземпляре GitLab) полную цепочку в файл сертификата, и ошибка изменилась на Проблема с сертификатом SSL: самозаверяющий сертификат в цепочке сертификатов.

Моя логика*: это работает для Ubuntu, но не для Docker. Поэтому я переехал в Доверие сертификатам TLS для исполнителей Docker и Kubernetes раздел.

Что я пробовал до сих пор, без успеха:

  1. Я добавил сертификат Root CA в /etc/gitlab-бегун/сертификаты/ca.crt.
  2. Я также пробовал с файлом с корневым ЦС и промежуточным ЦС в цепочке.
  3. я добавил Volumes = ["/cache", "/path/to-ca-cert-dir/ca.crt:/etc/gitlab-runner/certs/ca.crt:ro"] к config.toml файл. Но я почти уверен, что должен заменить /path/to-ca-cert-dir с чем-то. Я просто не знаю, что.

* Обновление: когда я установил GitLab Runner, я следовал Установите с помощью репозитория GitLab для Debian/Ubuntu/CentOS/RedHat., поэтому инструкции Docker/K8s не имели смысла. я разместил отвечать о том, как я смог это решить.

Рейтинг:1
флаг md

Я смог заставить его работать, следуя третьему варианту в Поддерживаемые параметры для самозаверяющих сертификатов, предназначенных для сервера GitLab., в котором говорится:

Чтение сертификата PEM: GitLab Runner считывает сертификат PEM (формат DER не поддерживается) из предопределенного файла:

/etc/gitlab-runner/certs/hostname.crt в системах *nix, когда GitLab Runner запущен от имени пользователя root.

Если адрес вашего сервера https://my.gitlab.server.com:8443/, создайте файл сертификата по адресу: /etc/gitlab-runner/certs/my.gitlab.server.com.crt.

Поэтому я просто добавил полную цепочку (сертификат GitLab, Intermediate, Root) к имени файла. /etc/gitlab-runner/certs/<gitlab-url>.crt. Перезапустил службы с перезапустить gitlab-бегун и работа работает.

Ответить или комментировать

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