Minha empresa mudou a Autoridade Certificadora (era uma CA única e agora temos uma CA raiz e uma CA intermediária). Alterei a configuração na instância do GitLab com sucesso e mudei para o executor (que está em um Ubuntu 18.04.5 LTS). Eu tentei seguir oDocumentos do GitLabsem sucesso.
Eu segui a abordagem padrãoaquique diz "Padrão - Leia o certificado do sistema", então adicionei os certificados (CA e Intermediário) à lista de CA do Ubuntu. Tudo pareceu funcionar porque o runner aparece no GitLab.
Eu começo um trabalho e recebo:
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
Em seguida, adicionei (na instância do GitLab) a cadeia completa ao arquivo de certificado e o erro mudou para SSL certificate problem: self signed certificate in certificate chain
.
Minha lógica*: Funciona para Ubuntu, mas não para Docker. Então me mudei para oConfiando em certificados TLS para executores Docker e Kubernetesseção.
O que tentei até agora, sem sucesso:
- Adicionei o certificado Root CA ao arquivo
/etc/gitlab-runner/certs/ca.crt
. - Também tentei com um arquivo com CA raiz e CA intermediária em cadeia.
- Eu adicionei
volumes = ["/cache", "/path/to-ca-cert-dir/ca.crt:/etc/gitlab-runner/certs/ca.crt:ro"]
aoconfig.toml
arquivo. Mas tenho quase certeza de que devo substituir/path/to-ca-cert-dir
por alguma coisa. Só não sei o quê.
*Atualização: Quando instalei o GitLab Runner eu seguiInstale usando o repositório GitLab para Debian/Ubuntu/CentOS/RedHat, então as instruções do Docker/K8s não faziam sentido. Eu postei umrespondersobre como consegui resolver isso.
Responder1
Consegui fazer funcionar seguindo a terceira opção emOpções suportadas para certificados autoassinados direcionados ao servidor GitLab, isso diz:
Leia um certificado PEM: o GitLab Runner lê o certificado PEM (o formato DER não é compatível) de um arquivo predefinido:
/etc/gitlab-runner/certs/hostname.crt em sistemas *nix quando o GitLab Runner é executado como root.
Se o endereço do seu servidor forhttps://my.gitlab.server.com:8443/, crie o arquivo de certificado em: /etc/gitlab-runner/certs/my.gitlab.server.com.crt.
Acabei de adicionar a cadeia completa (certificado GitLab, intermediário, raiz) a um nome de arquivo /etc/gitlab-runner/certs/<gitlab-url>.crt
. Reiniciei os serviços gitlab-runner restart
e o trabalho está funcionando.