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"]
в раздел [[бегуны]].