O certificado para Gitlab-Server é inválido para o nome alternativo do assunto

O certificado para Gitlab-Server é inválido para o nome alternativo do assunto

Minha empresa possui um certificado parahttps://data.ddl.at, que possui, entre outros, um SAN (nome alternativo do assunto) para gitlab.ddl.at. Este servidor Gitlab é interno e o nome de domínio só é resolvido pelo nosso servidor DNS interno. Para referência, existe também o SANhttps://sicher.ddl.at, que é público e válido em um navegador.

Configurei este certificado no Gitlab-Server, e quando vou para gitlab.ddl.at, o certificado é validado pelo navegador e considerado válido.

Os problemas surgem quando tento usar um Gitlab-Runner. Tenho um instalado e cadastrado em outra máquina, e depois de ter alguns problemas no início, consegui conectar na instância principal, mas os jobs ainda não conseguem fazer check-out dos submódulos, o runner está recebendo server certificate verification failed.

Agora, aqui está o que acredito ser o sintoma raiz do problema: se eu executar openssl s_client -connect data.ddl.at:443, obtenho:

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
[...]

E no final:Verify return code: 0 (ok)

Agora, quando corro openssl s_client -connect gitlab.ddl.at:443, recebo:

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
[...]

Com o primeiro erro sendo unable to get local issuer certificate.

Eu também tentei isso com o acesso público sicher.ddl.at, com o mesmo erro que o gitlab.ddl.at.

O certificado obtido é para data.ddl.at, mas possui SAN gitlab.ddl.at, isso não deveria torná-lo válido? O que estou fazendo de errado?

Responder1

Parece que gitlab.ddl.atfalta o certificado do emissor no servidor.

Se o cliente e o servidor não tiverem os certificados raiz e intermediários adequados, você poderá encontrar erros de validação.

Sempre certifico-me de instalar a cadeia completa no servidor para garantir que todos os clientes possam obter todos os certificados da cadeia.

Você tem algumas opções.

  1. Exporte a cadeia completa de data.ddl.ate importe-a para gitlab.ddl.at.

  2. Use uma ferramenta como OpenSSL para combinar a cadeia em um certificado e instale emgitlab.ddl.at

  3. Instale todos os certificados da cadeia no servidor.

informação relacionada