web-dev-qa-db-fra.com

Runner Gitlab-CI: ignorer le certificat auto-signé

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.

16
Etienne Gautier

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

24
liberforce

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
7
Luiz Dias

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

6
Etienne Gautier

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]].

4
jfreundo

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

4
Wassim Dhif

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,

  1. Ouvrez https://some-Host-gitlab.com dans le navigateur (j'utilise Chrome).
  2. Afficher les informations sur le site, généralement un verrou vert dans la barre d'URL.
  3. Téléchargez/Exportez le certificat en accédant aux informations du certificat (Chrome, Firefox a cette option)

Dans l'hôte gitlab-runner

  1. Renommez le certificat téléchargé avec .crt

    $ mv some-Host-gitlab.com some-Host-gitlab.com.crt

  2. 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.

2
New Chethan