GitLab-CI runner: игнорировать самозаверяющий сертификат

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.

5 ответов


на основе ответа Вассима, и документация gitlab о TLS-самозаверяющие и пользовательские 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-signed из-за ошибка gitlab #2675


Ok я следовал шаг за шагом этот пост http://moonlightbox.logdown.com/posts/2016/09/12/gitlab-ci-runner-register-x509-error и тогда это сработало как заклинание. Чтобы предотвратить мертвую ссылку я копирую шаги ниже:

сначала отредактируйте конфигурацию ssl на сервере GitLab (не runner)

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

скопируйте новый CA в GitLab CI runner

scp /etc/gitlab/ssl/192.168.1.1.crt root@192.168.1.2:/etc/gitlab-runner/certs

Спасибо @Moon Light @Wassim Dhif


В настоящее время нет возможности запустить multi runner с небезопасной опцией ssl.

в настоящее время в GitLab есть открытая проблема.

тем не менее вы должны иметь возможность получить свой сертификат, сделать его PEM-файлом и передать его команде runner с помощью --tls-ca-file

для создания файла PEM используйте openssl.
openssl x509 -in mycert.crt -out mycert.pem -outform PEM


в моем случае я получил его работу, добавив путь к.файл PEM следующим образом:

sudo gitlab-runner register --tls-ca-file /my/path/gitlab/gitlab.myserver.com.pem

в моей настройке также работало следующее. Важно, чтобы IP / Name, используемое для создания сертификата, соответствовало IP / Name, используемому для регистрации бегуна.

gitlab-runner register --tls-ca-file /my/path/gitlab/gitlab.myserver.com.pem

кроме того, может потребоваться добавить строку для поиска имени хоста в конфигурацию runners.файл toml также (раздел [бегуны.докер]): extra_hosts = ["git.domain.com:192.168.99.100"] см. также https://gitlab.com/gitlab-org/gitlab-runner/issues/2209

кроме того, могут быть некоторые network-trouble если для GitLab / GitLab-runner используется хост сетевого режима, он должен быть добавлен в конфигурацию.toml, а также запускает дополнительные контейнеры, которые в противном случае могли бы иметь проблему для подключения к GitLab-host ((раздел [бегуны.докер]): network_mode="host"

наконец, может возникнуть проблема с самозаверяющим SSL-сертификатом (https://gitlab.com/gitlab-org/gitlab-runner/issues/2659). Грязный обходной путь-добавить environment = ["GIT_SSL_NO_VERIFY=true"] в раздел [[бегуны]].