GitLab Runner para el servidor GitLab con certificado firmado por CA que falla con: certificado autofirmado en la cadena de certificados

GitLab Runner para el servidor GitLab con certificado firmado por CA que falla con: certificado autofirmado en la cadena de certificados

Mi empresa cambió de Autoridad de Certificación (era una CA única y ahora tenemos una CA raíz y una CA intermedia). Cambié la configuración en la instancia de GitLab con éxito y pasé al ejecutor (es decir, en Ubuntu 18.04.5 LTS). Intenté seguir elDocumentos de GitLabsin éxito.

Seguí el enfoque predeterminadoaquíque dice "Predeterminado - Leer el certificado del sistema", por lo que agregué los certificados (CA e Intermedio) a la lista de CA de Ubuntu. Todo pareció funcionar porque el corredor aparece en GitLab.

Empiezo un trabajo y obtengo:

Running with gitlab-runner 11.5.0 (3afdaba6)
  on RUN01 12ccbb74
Using Docker executor with image node:latest ...
Pulling docker image node:latest ...
Using docker image sha256:ab773999a02271b25a9f3bce46018fc3ad46a7f922a5e3e8712b6d1c7087c415 for node:latest ...
Running on runner-12ccbb74-project-73-concurrent-0 via (...)...
00:02
Fetching changes...
00:01
HEAD is now at 60b6860 Update dependency mocha to v9
fatal: unable to access 'https://gitlab-ci-token:xxxxxxxxxxxxxxxxxxxx@(...).git/': SSL certificate problem: unable to get issuer certificate
ERROR: Job failed: exit code 1

Luego agregué (en la instancia de GitLab) la cadena completa al archivo del certificado y el error cambió a SSL certificate problem: self signed certificate in certificate chain.

Mi lógica*: funciona para Ubuntu, pero no para Docker. Entonces me mudé a laConfiar en certificados TLS para ejecutores de Docker y Kubernetessección.

Lo que he intentado hasta ahora, sin éxito:

  1. Agregué el certificado de CA raíz a /etc/gitlab-runner/certs/ca.crt.
  2. También probé con un archivo con la CA raíz y la CA intermedia en una cadena.
  3. Agregué volumes = ["/cache", "/path/to-ca-cert-dir/ca.crt:/etc/gitlab-runner/certs/ca.crt:ro"]al config.tomlarchivo. Pero estoy casi seguro de que debería reemplazarlo /path/to-ca-cert-dircon algo. Simplemente no sé qué.

*Actualización: Cuando instalé GitLab Runner seguíInstalar usando el repositorio GitLab para Debian/Ubuntu/CentOS/RedHat, por lo que las instrucciones de Docker/K8 no tenían sentido. publiqué unrespuestasobre cómo pude resolver esto.

Respuesta1

Pude hacerlo funcionar siguiendo la tercera opción enOpciones admitidas para certificados autofirmados dirigidos al servidor GitLab, que dice:

Leer un certificado PEM: GitLab Runner lee el certificado PEM (el formato DER no es compatible) de un archivo predefinido:

/etc/gitlab-runner/certs/hostname.crt en sistemas *nix cuando GitLab Runner se ejecuta como root.

Si la dirección de su servidor eshttps://my.gitlab.server.com:8443/, cree el archivo de certificado en: /etc/gitlab-runner/certs/my.gitlab.server.com.crt.

Así que simplemente agregué la cadena completa (certificado GitLab, Intermedio, Raíz) a un nombre de archivo /etc/gitlab-runner/certs/<gitlab-url>.crt. Reinicié los servicios gitlab-runner restarty el trabajo está funcionando.

información relacionada