Если у вас Gitlab работает на субдомене, то для работы gitlab runners и вообще для работы https рекомендуется ставить сертификат, содержащий полную цепочку от вашего субдомена до корневого домена.
У нас имеется:
- .crt файл, содержащий открытую публичную часть нашего сертификата субдомена
- .key файл, содержащий приватный ключ субдомена
- .pem файл, содержащий публичную часть корневого сертификата домена
Закрытый ключь домена — your_domain_name.key
Первичный сертификат — your_domain_name.crt
Промежуточный сертификат — DigiCertCA.crt
Корневой сертификат — TrustedRoot.crt
.pem должен выглядеть примерно так:
Создание .pem файла с закрытым ключем для всей цепочки:
Make sure to include the beginning and end tags on each certificate. The result should look like this:
——BEGIN RSA PRIVATE KEY——
(your_domain_name.key)
——END RSA PRIVATE KEY——
——BEGIN CERTIFICATE——
(your_domain_name.crt)
——END CERTIFICATE——
——BEGIN CERTIFICATE——
(DigiCertCA.crt)
——END CERTIFICATE——
——BEGIN CERTIFICATE——
(TrustedRoot.crt)
——END CERTIFICATE——
Получается что наш .pem будет состоять из нескольких частей.
Дальше нам нужно из .pem сгенерировать приватный ключ:
openssl rsa -in fullchain.pem -out fullchain_private.key
Далее копируем наш получившийся fullchain_private.key в директорию /etc/gitlab/ssl/ и переименовываем его чтобы не запутаться в your_domain_name.key
Из файла .pem убираем приватный ключь и копируем его в директорию /etc/gitlab/ssl/ c именем your_domain_name.pem
Далее в конфиг файл добавляем строки (или меняем):
nginx[‘ssl_certificate’] = «/etc/gitlab/ssl/your_domain_name.pem»
nginx[‘ssl_certificate_key’] = «/etc/gitlab/ssl/your_domain_name.key»
Переконфигурируем Gitlab:
sudo gitlab-ctl reconfigure
Проверяем что все добавилось:
sudo openssl s_client -connect your_domain_name:443 -showcerts /dev/null