Рейтинг:0

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

флаг it

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

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

Проблемы возникают, когда я пытаюсь использовать Gitlab-Runner. У меня есть один установленный и зарегистрированный на другом компьютере, и после того, как сначала у меня возникли некоторые проблемы, я получил его для подключения к основному экземпляру, но задания по-прежнему не могут проверить подмодули, бегун получает проверка сертификата сервера не удалась.

Теперь о том, что я считаю корневым симптомом проблемы: Если я побегу openssl s_client -подключить data.ddl.at:443, Я получил:

ПОДКЛЮЧЕН(00000005)
depth=2 OU = GlobalSign Root CA - R3, O = GlobalSign, CN = GlobalSign
проверить возврат: 1
depth=1 C = BE, O = GlobalSign nv-sa, CN = GlobalSign Расширенная проверка CA — SHA256 — G3
проверить возврат: 1
depth=0 бизнес-категория = частная организация, серийный номер = FN 374566h, юрисдикция C = AT, юрисдикция L = Wels, юрисдикция ST = Oberoesterreich, C = AT, ST = Oberoesterreich, L = Ruestorf, улица = Erwin Greiner-Str. 4, OU = GIS, O = DDL GmbH, CN = data.ddl.at
проверить возврат: 1
---
Цепочка сертификатов
 0 s:businessCategory = Частная организация, серийный номер = FN 374566h, юрисдикция C = AT, юрисдикция L = Вельс, юрисдикция ST = Oberoesterreich, C = AT, ST = Oberoesterreich, L = Ruestorf, улица = Erwin Greiner-Str. 4, OU = GIS, O = DDL GmbH, CN = data.ddl.at
   i:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Расширенная проверка CA — SHA256 — G3
 1 s:C = BE, O = GlobalSign nv-sa, CN = расширенная проверка GlobalSign CA — SHA256 — G3
   i:OU = GlobalSign Root CA — R3, O = GlobalSign, CN = GlobalSign
---
Сертификат сервера
[...]

И в конце: Подтвердите код возврата: 0 (хорошо)

Теперь, когда я бегу openssl s_client -connect gitlab.ddl.at:443, Я получил:

ПОДКЛЮЧЕН(00000005)
depth=0 businessCategory = Частная организация, серийный номер = 374566h, юрисдикция C = AT, юрисдикцияL = Вельс, юрисдикцияST = Oberoesterreich, C = AT, ST = Oberoesterreich, L = Ruestorf, street = Erwin Greiner-Stra\C3\9Fe 4, OU = ГИС, O = DDL GmbH, CN = data.ddl.at
ошибка проверки: число = 20: невозможно получить сертификат локального эмитента
проверить возврат: 1
depth=0 businessCategory = Частная организация, серийный номер = 374566h, юрисдикция C = AT, юрисдикцияL = Вельс, юрисдикцияST = Oberoesterreich, C = AT, ST = Oberoesterreich, L = Ruestorf, street = Erwin Greiner-Stra\C3\9Fe 4, OU = ГИС, O = DDL GmbH, CN = data.ddl.at
ошибка проверки: число = 21: невозможно проверить первый сертификат
проверить возврат: 1
---
Цепочка сертификатов
 0 s:businessCategory = Частная организация, серийный номер = 374566h, юрисдикция C = AT, юрисдикцияL = Вельс, юрисдикцияST = Oberoesterreich, C = AT, ST = Oberoesterreich, L = Ruestorf, street = Erwin Greiner-Stra\C3\9Fe 4, OU = ГИС, O = DDL GmbH, CN = data.ddl.at
   i:C = BE, O = GlobalSign nv-sa, CN = GlobalSign Расширенная проверка CA — SHA256 — G3
---
Сертификат сервера
[...]

С первой ошибкой не удалось получить сертификат локального эмитента.

Я также пробовал это с общедоступным sicher.ddl.at, с той же ошибкой, что и gitlab.ddl.at.

Сертификат, который он получает, предназначен для data.ddl.at, но у него есть SAN gitlab.ddl.at, разве это не должно сделать его действительным? Что я делаю не так?

Рейтинг:0
флаг us

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

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

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

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

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

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

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

флаг it
Вариант номер 1 был моим решением, как только у меня была вся цепочка сертификатов в CRT-файле и я перезапустил сервер, ошибка исчезла. Большое спасибо @AutoGnome!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.