Лидер Gitlab-CI: игнорировать самозаверяющий сертификат
gitlab-ci-multi-runner register
дал мне
couldn't execute POST against https://xxxx/ci/api/v1/runners/register.json:
Post https://xxxx/ci/api/v1/runners/register.json:
x509: cannot validate certificate for xxxx because it doesn't contain any IP SANs
Есть ли способ отключить сертификацию сертификации?
Я использую Gitlab 8.13.1 и gitlab-ci-multi-runner 1.11.2.
Ответы
Ответ 1
На основе ответа Wassim и документации gitlab о самозаверяющих и подписанных сертификатами CA здесь, чтобы сэкономить время, если вы не являетесь администратором сервера gitlab, а просто сервером с бегуны (и если бегун запускается от имени root):
SERVER=gitlab.example.com
PORT=443
CERTIFICATE=/etc/gitlab-runner/certs/${SERVER}.crt
# Create the certificates hierarchy expected by gitlab
sudo mkdir -p $(dirname "$CERTIFICATE")
# Get the certificate in PEM format and store it
openssl s_client -connect ${SERVER}:${PORT} -showcerts </dev/null 2>/dev/null | sed -e '/-----BEGIN/,/-----END/!d' | sudo tee "$CERTIFICATE" >/dev/null
# Register your runner
gitlab-runner register --tls-ca-file="$CERTIFICATE" [your other options]
Обновление 1: сертификат должен быть абсолютным путем в правильном месте.
Обновление 2: он может все еще не работать с пользовательской подписью CA из-за ошибки gitlab-runner # 2675
Ответ 2
В моем случае я получил его работу, добавив путь к файлу .pem следующим образом:
sudo gitlab-runner register --tls-ca-file /my/path/gitlab/gitlab.myserver.com.pem
Ответ 3
Хорошо, я сделал шаг за шагом этот пост http://moonlightbox.logdown.com/posts/2016/09/12/gitlab-ci-runner-register-x509-error, а затем он работал как шарм.
Чтобы предотвратить мертвое звено, я копирую следующие шаги:
Сначала отредактируйте конфигурацию ssl на сервере GitLab (а не на бегуне)
vim /etc/pki/tls/openssl.cnf
[ v3_ca ]
subjectAltName=IP:192.168.1.1 <---- Add this line. 192.168.1.1 is your GitLab server IP.
Сгенерировать самозаверяющий сертификат
cd /etc/gitlab/ssl
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/gitlab/ssl/192.168.1.1.key -out /etc/gitlab/ssl/192.168.1.1.crt
sudo openssl dhparam -out /etc/gitlab/ssl/dhparam.pem 2048
sudo gitlab-ctl restart
Скопируйте новый ЦС в бегун GitLab CI
scp /etc/gitlab/ssl/192.168.1.1.crt [email protected]:/etc/gitlab-runner/certs
Спасибо @Moon Light @Wassim Dhif
Ответ 4
В настоящее время нет возможности запуска многопользовательского режима с небезопасным параметром ssl.
В настоящее время в GitLab есть открытая проблема.
Тем не менее вы должны иметь возможность получить свой сертификат, сделать его PEM файл и передать его команде runner с помощью --tls-ca-file
Для создания файла PEM используйте openssl.
openssl x509 -in mycert.crt -out mycert.pem -outform PEM
Ответ 5
В моей настройке работало и следующее. Просто важно, чтобы IP/Name, используемые для создания сертификата, соответствовали IP/Name, используемому для регистрации бегуна.
gitlab-runner register --tls-ca-file /my/path/gitlab/gitlab.myserver.com.pem
Кроме того, может потребоваться добавить строку для поиска имени хоста для файла config.toml runners (раздел [runners.docker]):
extra_hosts = ["git.domain.com:192.168.99.100"]
см. также https://gitlab.com/gitlab-org/gitlab-runner/issues/2209
Кроме того, может возникнуть проблема с сетью, если для хоста с сетевым режимом gitlab/gitlab-runner он также добавляется в config.toml, так как он запускает дополнительные контейнеры, которые в противном случае могли бы иметь проблема подключения к gitlab-host ((раздел [runners.docker]):
network_mode="host"
Наконец, может возникнуть проблема с самоподписанным SSL-Cert (https://gitlab.com/gitlab-org/gitlab-runner/issues/2659).
Грязным обходным путем является добавление environment = ["GIT_SSL_NO_VERIFY=true"]
в раздел [[бегуны]].
Ответ 6
Следующие шаги работали в моей среде. (Ubuntu)
Скачать сертификат
У меня не было доступа к серверу gitlab. Следовательно,
- Откройте https://some-host-gitlab.com в браузере (я использую Chrome).
- Просмотр информации о сайте, как правило, зеленый замок в строке URL.
- Скачать/экспортировать сертификат, перейдя к информации о сертификате (chrome, Firefox имеет эту опцию)
В Гитлаб-раннер
-
Переименуйте загруженный сертификат с помощью .crt
$ mv some-host-gitlab.com some-host-gitlab.com.crt
-
Зарегистрируйте бегуна сейчас с этим файлом
$ sudo gitlab-runner register --tls-ca-file/path/to/some-host-gitlab.com.crt
Я смог зарегистрировать бегуна в проекте.