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

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

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

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

Я начинаю работу и получаю:

Running with gitlab-runner 11.5.0 (3afdaba6)
  on RUN01 12ccbb74
Using Docker executor with image node:latest ...
Pulling docker image node:latest ...
Using docker image sha256:ab773999a02271b25a9f3bce46018fc3ad46a7f922a5e3e8712b6d1c7087c415 for node:latest ...
Running on runner-12ccbb74-project-73-concurrent-0 via (...)...
00:02
Fetching changes...
00:01
HEAD is now at 60b6860 Update dependency mocha to v9
fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@(...).git/': SSL certificate problem: unable to get issuer certificate
ERROR: Job failed: exit code 1

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

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

Что я уже пробовал, но безуспешно:

  1. Я добавил сертификат корневого центра сертификации в /etc/gitlab-runner/certs/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

Мне удалось заставить это работать, выполнив третий вариантПоддерживаемые параметры для самоподписанных сертификатов, предназначенных для сервера 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-runner restartи работа работает.

Связанный контент