우리 회사는 인증 기관을 변경했습니다(단일 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 인증서 신뢰부분.
지금까지 시도했지만 성공하지 못했습니다.
- 루트 CA 인증서를
/etc/gitlab-runner/certs/ca.crt
. - 또한 루트 CA와 중간 CA가 체인에 있는 파일을 사용해 보았습니다.
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
작업이 작동 중입니다.