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:
- Agregué el certificado de CA raíz a
/etc/gitlab-runner/certs/ca.crt
. - También probé con un archivo con la CA raíz y la CA intermedia en una cadena.
- Agregué
volumes = ["/cache", "/path/to-ca-cert-dir/ca.crt:/etc/gitlab-runner/certs/ca.crt:ro"]
alconfig.toml
archivo. Pero estoy casi seguro de que debería reemplazarlo/path/to-ca-cert-dir
con 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 restart
y el trabajo está funcionando.