CA 서명 인증서가 있는 GitLab 서버용 GitLab Runner 실패: 인증서 체인의 자체 서명 인증서

CA 서명 인증서가 있는 GitLab 서버용 GitLab Runner 실패: 인증서 체인의 자체 서명 인증서

우리 회사는 인증 기관을 변경했습니다(단일 CA였지만 이제는 루트 CA와 중간 CA가 있습니다). 성공적으로 GitLab 인스턴스의 구성을 변경하고 실행기(Ubuntu 18.04.5 LTS에 있음)로 이동했습니다. 나는 따라가려고 노력했다.GitLab 문서성공없이.

나는 기본 접근 방식을 따랐다.여기"기본값 - 시스템 인증서 읽기"라고 되어 있으므로 Ubuntu CA 목록에 인증서(CA 및 중간)를 추가했습니다. Runner가 GitLab에 나타나기 때문에 모든 것이 작동하는 것 같았습니다.

나는 일을 시작하고 다음을 얻습니다:

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

그런 다음 GitLab 인스턴스에서 전체 체인을 인증서 파일에 추가했는데 오류가 SSL certificate problem: self signed certificate in certificate chain.

내 논리*: Ubuntu에서는 작동하지만 Docker에서는 작동하지 않습니다. 그래서 나는 다음으로 이사했다.Docker 및 Kubernetes 실행기에 대한 TLS 인증서 신뢰부분.

지금까지 시도했지만 성공하지 못했습니다.

  1. 루트 CA 인증서를 /etc/gitlab-runner/certs/ca.crt.
  2. 또한 루트 CA와 중간 CA가 체인에 있는 파일을 사용해 보았습니다.
  3. volumes = ["/cache", "/path/to-ca-cert-dir/ca.crt:/etc/gitlab-runner/certs/ca.crt:ro"]파일 에 추가했습니다 config.toml. 하지만 /path/to-ca-cert-dir뭔가로 교체해야 한다고 거의 확신합니다 . 나는 단지 무엇을 모른다.

*업데이트: GitLab Runner를 설치했을 때 따랐습니다.Debian/Ubuntu/CentOS/RedHat용 GitLab 저장소를 사용하여 설치, 따라서 Docker/K8s 지침이 의미가 없습니다. 나는 게시했다답변내가 이 문제를 어떻게 해결할 수 있었는지.

답변1

나는 세 번째 옵션에 따라 작동하도록 만들 수있었습니다.GitLab 서버를 대상으로 하는 자체 서명 인증서에 지원되는 옵션, 그 내용은 다음과 같습니다.

PEM 인증서 읽기: GitLab Runner는 사전 정의된 파일에서 PEM 인증서(DER 형식은 지원되지 않음)를 읽습니다.

GitLab Runner가 루트로 실행될 때 *nix 시스템의 /etc/gitlab-runner/certs/hostname.crt.

서버 주소가 다음과 같은 경우https://my.gitlab.server.com:8443/, /etc/gitlab-runner/certs/my.gitlab.server.com.crt에서 인증서 파일을 만듭니다.

그래서 파일 이름에 전체 체인(GitLab 인증서, 중간, 루트)을 추가했습니다 /etc/gitlab-runner/certs/<gitlab-url>.crt. 서비스를 다시 시작했고 gitlab-runner restart작업이 작동 중입니다.

관련 정보