Моя компания сменила центр сертификации (был один центр сертификации, а теперь у нас есть корневой центр сертификации и промежуточный центр сертификации). Я успешно изменил конфигурацию в экземпляре 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раздел.
Что я уже пробовал, но безуспешно:
- Я добавил сертификат корневого центра сертификации в
/etc/gitlab-runner/certs/ca.crt
. - Я также попробовал с файлом, содержащим корневой и промежуточный центры сертификации в цепочке.
- Я добавил
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
и работа работает.