Certificate for Gitlab-Server is invalid für Subject Alternative Name

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

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

0
задан 11 August 2021 в 11:34
1 ответ

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

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

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

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

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

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

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

0
ответ дан 11 August 2021 в 11:46

Теги

Похожие вопросы