Сертификат для Gitlab-Server недействителен для альтернативного имени субъекта

Сертификат для Gitlab-Server недействителен для альтернативного имени субъекта

У моей компании есть сертификатhttps://data.ddl.at, который имеет, среди прочего, SAN (Subject Alternative Name) для gitlab.ddl.at. Этот Gitlab-сервер является внутренним, и доменное имя разрешается только нашим внутренним DNS-сервером. Для справки, есть также SANhttps://sicher.ddl.at, который является общедоступным и действителен в браузере.

Я настроил этот сертификат на Gitlab-Server, и когда я захожу на gitlab.ddl.at, сертификат проверяется браузером и считается действительным.

Проблемы возникают, как только я пытаюсь использовать Gitlab-Runner. У меня есть один установленный и зарегистрированный на другой машине, и после некоторых проблем поначалу я смог подключить его к основному экземпляру, но задания по-прежнему не могут извлечь подмодули, 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.at, но у него есть SAN gitlab.ddl.at, разве это не должно сделать его действительным? Что я делаю не так?

решение1

Похоже, на сервере gitlab.ddl.atотсутствует сертификат эмитента.

Если у клиента и сервера нет соответствующих корневых и промежуточных сертификатов, вы можете столкнуться с ошибками проверки.

Я всегда устанавливаю на сервер полную цепочку, чтобы все клиенты могли получить все сертификаты в цепочке.

У вас есть несколько вариантов.

  1. Экспортируйте полную цепочку из data.ddl.atи затем импортируйте ее в gitlab.ddl.at.

  2. Используйте такой инструмент, как OpenSSL, чтобы объединить цепочку в один сертификат, а затем установите его.gitlab.ddl.at

  3. Установите все сертификаты в цепочке на сервер.

Связанный контент