Перейти к содержанию

Безопасная конфигурация

Конфигурирование SSL

  1. Отредактируйте файл /etc/gitlab/gitlab.rb:

    1. Укажите external_url для вашего домена. Обратите внимание на наличие https в URL: external_url "<https://yoursite.ru>".
    2. Отключите интеграцию с Let’s Encrypt: letsencrypt['enable'] = false.

      Система предпринимает попытки обновления сертификата Let’s Encrypt при каждой реконфигурации. Если планируется использовать собственный созданный сертификат, необходимо отключить интеграцию с Let’s Encrypt, в противном случае сертификат не сможет быть перезаписан в результате автоматического обновления.

  2. Создайте директорию /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.

  3. Если файл 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'
    
  4. Переконфигурируйте Систему:

    gitlab-ctl reconfigure
    

Переадресация HTTP-трафика на HTTPS

По умолчанию, когда указывается external_url при настройке HTTPS, NGINX перестает получать зашифрованный HTTP-трафик на порту 80. Чтобы перенаправить HTTP на HTTPS:

  1. Отредактируйте файл /etc/gitlab/gitlab.rb:

    nginx['redirect_http_to_https'] = true
    
  2. Переконфигурируйте Систему:

    gitlab-ctl reconfigure
    

Изменение порта для HTTPS-трафика по умолчанию

Если для HTTPS-трафика необходимо использовать порт, отличный от того, который используется по умолчанию (443), укажите его как часть параметра external_url:

  1. Отредактируйте /etc/gitlab/gitlab.rb:

    external_url "<https://yoursite.ru:2443>"
    
  2. Переконфигурируйте Систему:

    gitlab-ctl reconfigure
    

Изменение расположения SSL-сертификата

Если имя хоста yoursite.ru, Система по умолчанию обращается к приватному ключу /etc/ahcode/ssl/yoursite.ru.key и публичному сертификату /etc/ahcode/ssl/yoursite.ru.crt.

Можно изменить расположение SSL-сертификатов:

  1. Создайте директорию и сформируйте для нее соответствующие права доступа, а затем разместите в ней файлы .crt и .key:

    mkdir -p /mnt/gitlab/ssl
    chmod 755 /mnt/gitlab/ssl
    cp gitlab.key gitlab.crt /mnt/gitlab/ssl/
    

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

  2. Отредактируйте /etc/gitlab/gitlab.rb:

    nginx['ssl_certificate'] = "/mnt/gitlab/ssl/gitlab.crt"
    nginx['ssl_certificate_key'] = "/mnt/gitlab/ssl/gitlab.key"
    
  3. Переконфигурируйте Систему:

    gitlab-ctl reconfigure
    

Установка пользовательских публичных сертификатов

Некоторые сетевые окружения подключаются к внешним ресурсам для выполнения различных задач, и Система позволяет использовать HTTPS-соединения с использованием самоподписанных сертификатов. Система имеет собственный пакет ca-cert, в который можно добавить сертификаты, поместив их в каталог /etc/gitlab/trusted-certs.

Чтобы установить публичные пользовательские сертификаты:

  1. Сгенерируйте PEM или DER закодированный открытый сертификат из сертификата закрытого ключа.

    • Скопируйте только файл открытого сертификата в директорию /etc/gitlab/trusted-certs. Если используется несколько нод, убедитесь, что сертификат присутствует на всех нодах.
    • Система по умолчанию ожидает, что файл будет иметь имя, соответствующее используемому домену, и иметь расширение .crt. Например, если адрес сервера https://yoursite.ru, то сертификат должен иметь имя yoursite.ru.crt.
    • Если Системе необходимо подключиться к внешнему ресурсу, который использует пользовательский публичный сертификат, в директории /etc/gitlab/trusted-certs с расширением .crt. Не следует называть файл, опираясь на доменное имя соответствующего внешнего ресурса, несмотря на то, что это помогает сохранить последовательность в использовании имен.
  2. Чтобы указать другой путь и имя файла, можно изменить расположение SSL-сертификатов (см. выше).

  3. Переконфигурируйте Систему:

    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