Безопасная конфигурация¶
Конфигурирование SSL¶
-
Отредактируйте файл
/etc/gitlab/gitlab.rb
:- Укажите
external_url
для вашего домена. Обратите внимание на наличиеhttps
в URL:external_url "<https://yoursite.ru>"
. -
Отключите интеграцию с Let’s Encrypt:
letsencrypt['enable'] = false
.Система предпринимает попытки обновления сертификата Let’s Encrypt при каждой реконфигурации. Если планируется использовать собственный созданный сертификат, необходимо отключить интеграцию с Let’s Encrypt, в противном случае сертификат не сможет быть перезаписан в результате автоматического обновления.
- Укажите
-
Создайте директорию
/etc/gitlab/ssl
и скопируйте в нее ключ и сертификат:mkdir -p /etc/gitlab/ssl chmod 755 /etc/gitlab/ssl cp yoursite.ru.key yoursite.ru.crt /etc/ahcode/ssl/
В примере имя хоста —
yoursite.ru
, поэтому Система ищет файлы приватного ключа и публичного сертификата соответственно по следующим путям:/etc/ahcode/ssl/yoursite.ru.key
и/etc/ahcode/ssl/yoursite.ru.crt
. При необходимости можно изменить расположение этих файлов.Необходимо использовать полную цепочку сертификатов в верной последовательности, чтобы предотвратить ошибки SSL при соединении с клиентом: сначала — сертификат сервера, затем — все промежуточные сертификаты и в завершение корневой CA.
-
Если файл
certificate.key
защищен паролем, NGINX не запрашивает его при переконфигурации Системы. Чтобы указать пароль для файла ключа, сохраните его в текстовом файле, например,/etc/ahcode/ssl/key_file_password.txt
и добавьте путь в файл/etc/gitlab/gitlab.rb
:nginx['ssl_password_file'] = '/etc/ahcode/ssl/key_file_password.txt'
-
Переконфигурируйте Систему:
gitlab-ctl reconfigure
Переадресация HTTP-трафика на HTTPS¶
По умолчанию, когда указывается external_url
при настройке HTTPS, NGINX перестает получать зашифрованный HTTP-трафик на порту 80
. Чтобы перенаправить HTTP на HTTPS:
-
Отредактируйте файл
/etc/gitlab/gitlab.rb
:nginx['redirect_http_to_https'] = true
-
Переконфигурируйте Систему:
gitlab-ctl reconfigure
Изменение порта для HTTPS-трафика по умолчанию¶
Если для HTTPS-трафика необходимо использовать порт, отличный от того, который используется по умолчанию (443
), укажите его как часть параметра external_url
:
-
Отредактируйте
/etc/gitlab/gitlab.rb
:external_url "<https://yoursite.ru:2443>"
-
Переконфигурируйте Систему:
gitlab-ctl reconfigure
Изменение расположения SSL-сертификата¶
Если имя хоста yoursite.ru
, Система по умолчанию обращается к приватному ключу /etc/ahcode/ssl/yoursite.ru.key
и публичному сертификату /etc/ahcode/ssl/yoursite.ru.crt
.
Можно изменить расположение SSL-сертификатов:
-
Создайте директорию и сформируйте для нее соответствующие права доступа, а затем разместите в ней файлы
.crt
и.key
:mkdir -p /mnt/gitlab/ssl chmod 755 /mnt/gitlab/ssl cp gitlab.key gitlab.crt /mnt/gitlab/ssl/
Следует использовать полную цепочку сертификатов в соответствующем порядке в целях предотвращения SSL-ошибок при соединении с клиентом: сначала — сертификат сервера, затем — все промежуточные сертификаты и в завершение корневой CA.
-
Отредактируйте
/etc/gitlab/gitlab.rb
:nginx['ssl_certificate'] = "/mnt/gitlab/ssl/gitlab.crt" nginx['ssl_certificate_key'] = "/mnt/gitlab/ssl/gitlab.key"
-
Переконфигурируйте Систему:
gitlab-ctl reconfigure
Установка пользовательских публичных сертификатов¶
Некоторые сетевые окружения подключаются к внешним ресурсам для выполнения различных задач, и Система позволяет использовать HTTPS-соединения с использованием самоподписанных сертификатов. Система имеет собственный пакет ca-cert
, в который можно добавить сертификаты, поместив их в каталог /etc/gitlab/trusted-certs
.
Чтобы установить публичные пользовательские сертификаты:
-
Сгенерируйте
PEM
илиDER
закодированный открытый сертификат из сертификата закрытого ключа.- Скопируйте только файл открытого сертификата в директорию
/etc/gitlab/trusted-certs
. Если используется несколько нод, убедитесь, что сертификат присутствует на всех нодах. - Система по умолчанию ожидает, что файл будет иметь имя, соответствующее используемому домену, и иметь расширение
.crt
. Например, если адрес сервераhttps://yoursite.ru
, то сертификат должен иметь имяyoursite.ru.crt
. - Если Системе необходимо подключиться к внешнему ресурсу, который использует пользовательский публичный сертификат, в директории
/etc/gitlab/trusted-certs
с расширением.crt
. Не следует называть файл, опираясь на доменное имя соответствующего внешнего ресурса, несмотря на то, что это помогает сохранить последовательность в использовании имен.
- Скопируйте только файл открытого сертификата в директорию
-
Чтобы указать другой путь и имя файла, можно изменить расположение SSL-сертификатов (см. выше).
-
Переконфигурируйте Систему:
gitlab-ctl reconfigure
Использование пользовательской цепочки сертификатов¶
Серверный, промежуточный и корневой сертификаты должны помещаться в отдельные файлы в директории /etc/gitlab/trusted-certs
.
Это относится к случаям, когда сама Система, так и внешние ресурсы, к которым она должна подключаться, используют пользовательскую цепочку сертификатов.
Например, для Системы можно использовать:
/etc/gitlab/trusted-certs/example.gitlab.com.crt
/etc/gitlab/trusted-certs/example.gitlab.com_intermediate.crt
/etc/gitlab/trusted-certs/example.gitlab.com_root.crt
Для внешних ресурсов, к которым должна подключаться Система, можно использовать:
/etc/gitlab/trusted-certs/external-service.gitlab.com.crt
/etc/gitlab/trusted-certs/external-service.gitlab.com_intermediate.crt
/etc/gitlab/trusted-certs/external-service.gitlab.com_root.crt