주체 대체 이름에 대한 Gitlab-Server 인증서가 유효하지 않습니다.

주체 대체 이름에 대한 Gitlab-Server 인증서가 유효하지 않습니다.

우리 회사는 다음에 대한 인증서를 가지고 있습니다.https://data.ddl.at에 대한 SAN(주체 대체 이름)이 있습니다 gitlab.ddl.at. 이 Gitlab-Server는 내부용이며 도메인 이름은 내부 DNS 서버에 의해서만 확인됩니다. 참고로 SAN도 있습니다https://sicher.ddl.at는 공개되어 있으며 브라우저에서 유효합니다.

Gitlab-Server에서 이 인증서를 구성했으며, 로 이동하면 gitlab.ddl.at브라우저에서 인증서의 유효성을 검사하고 유효한 것으로 간주합니다.

Gitlab-Runner를 사용하려고 하면 문제가 발생합니다. 다른 컴퓨터에 하나를 설치하고 등록했는데 처음에 몇 가지 문제가 발생한 후 기본 인스턴스에 연결했지만 작업에서 여전히 하위 모듈을 체크아웃할 수 없어 실행기가 server certificate verification failed.

이제 문제의 근본 증상이라고 생각되는 내용은 다음과 openssl s_client -connect data.ddl.at:443같습니다. 을 실행하면 다음과 같은 결과가 나타납니다.

CONNECTED(00000005)
depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
verify return:1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Extended Validation CA - SHA256 - G3
verify return:1
depth=0 businessCategory = Private Organization, serialNumber = FN 374566h, jurisdictionC = AT, jurisdictionL = Wels, jurisdictionST = Oberoesterreich, C = AT, ST = Oberoesterreich, L = Ruestorf, street = Erwin Greiner-Str. 4, OU = GIS, O = DDL GmbH, CN = data.ddl.at
verify return:1
---
Certificate chain
 0 s:businessCategory = Private Organization, serialNumber = FN 374566h, jurisdictionC = AT, jurisdictionL = Wels, jurisdictionST = Oberoesterreich, C = AT, ST = Oberoesterreich, L = Ruestorf, street = Erwin Greiner-Str. 4, OU = GIS, O = DDL GmbH, CN = data.ddl.at
   i:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Extended Validation CA - SHA256 - G3
 1 s:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Extended Validation CA - SHA256 - G3
   i:OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
---
Server certificate
[...]

그리고 마지막에는:Verify return code: 0 (ok)

이제 실행하면 openssl s_client -connect gitlab.ddl.at:443다음을 얻습니다.

CONNECTED(00000005)
depth=0 businessCategory = Private Organization, serialNumber = 374566h, jurisdictionC = AT, jurisdictionL = Wels, jurisdictionST = Oberoesterreich, C = AT, ST = Oberoesterreich, L = Ruestorf, street = Erwin Greiner-Stra\C3\9Fe 4, OU = GIS, O = DDL GmbH, CN = data.ddl.at
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 businessCategory = Private Organization, serialNumber = 374566h, jurisdictionC = AT, jurisdictionL = Wels, jurisdictionST = Oberoesterreich, C = AT, ST = Oberoesterreich, L = Ruestorf, street = Erwin Greiner-Stra\C3\9Fe 4, OU = GIS, O = DDL GmbH, CN = data.ddl.at
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
 0 s:businessCategory = Private Organization, serialNumber = 374566h, jurisdictionC = AT, jurisdictionL = Wels, jurisdictionST = Oberoesterreich, C = AT, ST = Oberoesterreich, L = Ruestorf, street = Erwin Greiner-Stra\C3\9Fe 4, OU = GIS, O = DDL GmbH, CN = data.ddl.at
   i:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Extended Validation CA - SHA256 - G3
---
Server certificate
[...]

첫 번째 오류는 unable to get local issuer certificate.

나는 또한 공개적으로 접근 가능한 으로 이것을 시도했는데 sicher.ddl.at, 와 같은 오류가 발생했습니다 gitlab.ddl.at.

그것이 얻는 인증서는 에 대한 것이지만 data.ddl.atSAN이 있습니다 gitlab.ddl.at. 이것이 유효하지 않습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변1

의 서버에 gitlab.ddl.at발급자 인증서가 누락된 것 같습니다.

클라이언트와 서버에 적절한 루트 및 중간 인증서가 없으면 유효성 검사 오류가 발생할 수 있습니다.

나는 항상 모든 클라이언트가 체인의 모든 인증서를 얻을 수 있도록 서버에 전체 체인을 설치합니다.

몇 가지 옵션이 있습니다.

  1. 에서 전체 체인을 내보낸 data.ddl.at다음 으로 가져옵니다 gitlab.ddl.at.

  2. OpenSSL과 같은 도구를 사용하여 체인을 하나의 인증서로 결합한 다음gitlab.ddl.at

  3. 체인의 모든 인증서를 서버에 설치합니다.

관련 정보