Рейтинг:0

GitLab обслуживает список сертификатов из 1 сертификата

флаг ru

Я пытаюсь запустить комплексный установщик GitLab и использовать сертификат SSL моей организации, но клиенты SSL жалуются, что эмитент сертификата неизвестен. Как мне настроить промежуточные сертификаты в цепочке доверия?

Моя настройка начинается с запуска последней версии GitLab, открывающей, среди прочего, порты для HTTPS и HTTP:

sudo docker run --detach --hostname myserver.myorg.org --publish 1443:443 --publish 1080:80 \
--publish 2222:22 --publish 5005:5005 --name gitlab1 \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/журналы:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:14.2.3-ce.0

Это создает кучу конфигурации по умолчанию в /srv/gitlab/config, поэтому я иду и устанавливаю URL-адрес сервера в gitlab.rb:

external_url 'https://myserver.myorg.org'

Я получил файл сертификата и файл ключа от своей организации, поэтому копирую их в /srv/gitlab/config/ssl каталог как мой сервер.myorg.org.crt и мой сервер.myorg.org.key. Затем я перенастраиваю сервер GitLab:

sudo docker exec -it gitlab1 bash -c "gitlab-ctl перенастроить"

Теперь я пытаюсь проверить конфигурацию SSL:

эхо | gnutls-cli -p1443 myserver.myorg.org

Я получаю кучу ошибок в выводе, в том числе эти:

...
Обработано 129 сертификатов ЦС.
Разрешение "myserver.myorg.org:1443"...
Подключение к "127.0.0.1:1443"...
- Тип сертификата: X.509
- Получил список сертификатов из 1 сертификата.
...
- Статус: Сертификат НЕ является доверенным. Издатель сертификата неизвестен. 
*** Проверка PKI сертификата сервера не удалась...
*** Фатальная ошибка: Ошибка в сертификате.

Похоже, у меня нет полной цепочки доверия. Эмитент сертификата нашей организации: «CN=DigiCert TLS RSA SHA256 2020 CA1,O=DigiCert Inc,C=US». Я нашел их сертификаты на их сайт, и загрузил этот конкретный:

wget https://cacerts.digicert.com/DigiCertTLSRSASHA2562020CA1-1.crt.pem

Я извлек текстовую версию сертификата:

openssl x509 — в DigiCertTLSRSASHA2562020CA1-1.crt.pem — текст
...
-----НАЧАТЬ СЕРТИФИКАТ-----
MIIEvjCCA6agAwIBAgIQBtjZBNVYQ0b2ii+nVCJ+xDANBgkqhkiG9w0BAQsFADBh
...
A7sKPPcw7+uvTPyLNhBzPvOk
-----КОНЕЦ СЕРТИФИКАТА-----

Я добавил это к сертификату моей организации в /srv/gitlab/config/ssl/myserver.myorg.org.crt так что теперь у него сначала сертификат организации, а затем сертификат Digicert.

-----НАЧАТЬ СЕРТИФИКАТ-----
... сертификат нашей организации ...
-----КОНЕЦ СЕРТИФИКАТА-----
-----НАЧАТЬ СЕРТИФИКАТ-----
... Digicert сертификат, который я только что скачал
-----КОНЕЦ СЕРТИФИКАТА-----

Это шаг, в котором я меньше всего уверен. Я основываюсь на Инструкции GitLab:

Убедитесь, что вы используете полную цепочку сертификатов, чтобы предотвратить ошибки SSL при подключении клиентов. Полный порядок цепочки сертификатов должен состоять из сертификата сервера, за которым следуют все промежуточные сертификаты, а корневой ЦС — в последнюю очередь.

Означает ли это просто склеивание двух сертификатов в одном файле?

Во всяком случае, я запустил переконфигурировать команда и снова проверено:

sudo docker exec -it gitlab1 bash -c "gitlab-ctl перенастроить"
...
эхо | gnutls-cli -p1443 myserver.myorg.org

Я все еще получаю те же ошибки, в том числе «Получил список сертификатов из 1 сертификата». Это заставляет меня думать, что я неправильно добавил сертификат Digicert в цепочку. Я также попытался поставить сертификат Digicert перед сертификатом нашей организации.

Просто чтобы убедиться, что сертификаты действительны, я последовал эта почта. openssl s_server и openssl s_client отлично работали вместе, поэтому я думаю, что проблема в моей конфигурации GitLab.

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

Когда я прочитал Документация GitLab внимательнее, я понял, что неправильно понял разницу между переконфигурировать и nginx.

Если содержимое ваших SSL-сертификатов было обновлено, но не были внесены изменения в конфигурацию gitlab.rb, то перенастройка gitlab-ctl не повлияет на NGINX. Вместо этого запустите sudo gitlab-ctl hup nginx, чтобы NGINX изящно перезагрузил существующую конфигурацию и новые сертификаты.

я думал переконфигурировать сделал бы все в nginx плюс многое другое. Оказывается, что переконфигурировать не заметит изменений в файлах сертификатов, если вы ничего не меняли в /srv/gitlab/config/gitlab.rb файл.

Я исправил свою проблему, выполнив эту команду после добавления промежуточного сертификата в /srv/gitlab/config/ssl/myserver.myorg.org.crt:

sudo docker exec -it gitlab1 bash -c "gitlab-ctl hup nginx"

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

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