gitlab-ci-multi-runner register
m'a donné
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
Existe-t-il un moyen de désactiver la validation de la certification?
J'utilise Gitlab 8.13.1 et gitlab-ci-multi-runner 1.11.2.
Basé sur la réponse de Wassim, et documentation gitlab sur les certificats tls auto-signés et personnalisés signés CA , voici pour gagner du temps si vous n'êtes pas l'administrateur du serveur gitlab mais juste du serveur avec les coureurs (et si le coureur est exécuté en tant que 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]
Mise à jour 1: le certificat doit être un chemin absolu au bon endroit.
Mise à jour 2 : il peut toujours échouer avec une signature CA personnalisée à cause de bogue gitlab # 2675
Dans mon cas, je l'ai fait fonctionner en ajoutant le chemin d'accès au fichier .pem comme suit:
Sudo gitlab-runner register --tls-ca-file /my/path/gitlab/gitlab.myserver.com.pem
Ok j'ai suivi étape par étape ce post http://moonlightbox.logdown.com/posts/2016/09/12/gitlab-ci-runner-register-x509-error puis ça a fonctionné comme un charme. Pour éviter un lien mort, je copie les étapes ci-dessous:
Editez d'abord la configuration SSL sur le serveur GitLab (pas le 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.
Re-générer un certificat auto-signé
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
Copiez la nouvelle autorité de certification dans le runner GitLab CI
scp /etc/gitlab/ssl/192.168.1.1.crt [email protected]:/etc/gitlab-runner/certs
Merci @Moon Light @Wassim Dhif
Dans ma configuration, les éléments suivants ont également fonctionné. Il est juste important que l'IP/nom utilisé pour créer le certificat corresponde à l'IP/nom utilisé pour enregistrer le coureur.
gitlab-runner register --tls-ca-file /my/path/gitlab/gitlab.myserver.com.pem
De plus, il pourrait être nécessaire d'ajouter une ligne de recherche de nom d'hôte au fichier runners config.toml (section [runners.docker]): extra_hosts = ["git.domain.com:192.168.99.100"]
voir aussi https://gitlab.com/gitlab-org/gitlab-runner/issues/2209
De plus, il pourrait y avoir des problèmes de réseau si pour l'hôte en mode réseau gitlab/gitlab-runner, il doit également être ajouté au config.toml, car il démarre des conteneurs supplémentaires, qui autrement pourraient avoir un problème pour se connecter à l'hôte gitlab ((section [runners.docker]): network_mode="Host"
Enfin, il pourrait y avoir un problème avec le certificat SSL auto-signé ( https://gitlab.com/gitlab-org/gitlab-runner/issues/2659 ). Une solution de contournement sale consiste à ajouter environment = ["GIT_SSL_NO_VERIFY=true"]
à la section [[coureurs]].
Actuellement, il n'est pas possible d'exécuter le multi-coureur avec une option SSL non sécurisée.
Il y a actuellement un problème ouvert à GitLab à ce sujet.
Vous devriez toujours pouvoir obtenir votre certificat, en faire un fichier PEM et le donner à la commande runner en utilisant --tls-ca-file
Pour créer le fichier PEM, utilisez openssl.openssl x509 -in mycert.crt -out mycert.pem -outform PEM
Les étapes suivantes ont fonctionné dans mon environnement. (Ubuntu)
Télécharger le certificat
Je n'avais pas accès au serveur gitlab. Par conséquent,
Dans l'hôte gitlab-runner
Renommez le certificat téléchargé avec .crt
$ mv some-Host-gitlab.com some-Host-gitlab.com.crt
Enregistrez le coureur maintenant avec ce fichier
$ Sudo gitlab-runner register --tls-ca-file /path/to/some-Host-gitlab.com.crt
J'ai pu inscrire un coureur à un projet.