GitLab Runner para servidor GitLab com certificado assinado por CA falhando com: certificado autoassinado na cadeia de certificados

GitLab Runner para servidor GitLab com certificado assinado por CA falhando com: certificado autoassinado na cadeia de certificados

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:

  1. Adicionei o certificado Root CA ao arquivo /etc/gitlab-runner/certs/ca.crt.
  2. Também tentei com um arquivo com CA raiz e CA intermediária em cadeia.
  3. Eu adicionei volumes = ["/cache", "/path/to-ca-cert-dir/ca.crt:/etc/gitlab-runner/certs/ca.crt:ro"]ao config.tomlarquivo. Mas tenho quase certeza de que devo substituir /path/to-ca-cert-dirpor 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 restarte o trabalho está funcionando.

informação relacionada