В наших предыдущих статьях мы рассмотрели установку GitLab CE в дистрибутивах Ubuntu, Debian, CentOS и Fedora Linux.
В сегодняшней статье мы увидим, как вы можете защитить GitLab Server с помощью SSL-сертификата.
Доступ к GitLab будет осуществляться по протоколу HTTPS.
Существует два сценария, которые мы рассмотрим для настройки доступа к GitLab HTTPS:
- Безопасный сервер GitLab с коммерческим SSL-сертификатом – E.g DigiCert, Comodo и т.д.
- Безопасный GitLab Server с SSL-сертификатом Let Encrypt
Безопасный GitLab Server с коммерческим сертификатом SSL
Коммерческие SSL-сертификаты – это надежный сертификат DV (проверка домена), поддерживаемый всеми популярными веб-браузерами.
Вы приобретете этот сертификат в доверенном коммерческом центре сертификации (CA), таком как Comodo, DigiCert, GeoTrust и т.д.
Также, вы можете сразу приобрести сертификаты при покупке домена, например на сайте https://regery.com.ua/ru
После покупки сертификата загрузите файл сертификата и поместите его с закрытым ключом в каталог /etc/gitlab/ssl/.
/etc/gitlab/ssl/git.example.com.key /etc/gitlab/ssl/git.example.com.crt
Затем настройте параметры SSL в файле /etc/gitlab/gitlab.rb.
Сначала измените внешний URL с http на https
external_url 'https://git.example.com'
В разделе ## GitLab NGINX включите Nginx и укажите ключ SSL и пути к сертификатам.
nginx['enable'] = true nginx['client_max_body_size'] = '250m' nginx['redirect_http_to_https'] = true nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/git.example.com.key" nginx['ssl_certificate'] = "/etc/gitlab/ssl/git.example.com.crt" nginx['ssl_protocols'] = "TLSv1.1 TLSv1.2"
Другие параметры SSL комментируются, вы можете прочитать их и внести изменения, которые подходят для вашего случая.
Когда закончите, выполните следующую команду, чтобы изменения вступили в силу:
sudo gitlab-ctl reconfigure
Подождите, пока команда завершит выполнение, затем перейдите по адресу https://git.example.com, чтобы войти в свою панель управления GitLab.
Безопасный GitLab Server с SSL-сертификатом Let Encrypt
Откройте файл /etc/gitlab/gitlab.rband и найдите раздел интеграции Let’s Encrypt.
Обратите внимание, что вам нужно доменное имя с действительной записью A, указывающей на ваш сервер GitLab, чтобы получить сертификат Let Encrypt.
Установите в качестве имени хоста вашего сервера DNS-имя с допустимой записью A:
sudo hostnamectl set-hostname git.example.com --static
Обязательные настройки:
letsencrypt['enable'] = true letsencrypt['contact_emails'] = ['admin@example.com'] # This should be an array of email addresses to add as contacts letsencrypt['auto_renew'] = true
Вы также можете указать время в виде час автоматического обновления и день месяца для вашего сертификата.
letsencrypt['auto_renew_hour'] = 3 letsencrypt['auto_renew_day_of_month'] = "*/7"
Когда закончите, выполните следующую команду, чтобы изменения вступили в силу:
sudo gitlab-ctl reconfigure
Чтобы проверить настройки GitLab, выполните команду:
$ sudo gitlab-rake gitlab:check Checking GitLab Shell ... GitLab Shell version >= 8.4.1 ? ... OK (8.4.1) hooks directories in repos are links: ... can't check, you have no projects Running /opt/gitlab/embedded/service/gitlab-shell/bin/check Check GitLab API access: OK Redis available via internal API: OK Access to /var/opt/gitlab/.ssh/authorized_keys: OK gitlab-shell self-check successful Checking GitLab Shell ... Finished Checking Gitaly ... default ... OK Checking Gitaly ... Finished Checking Sidekiq ... Running? ... yes Number of Sidekiq processes ... 1 Checking Sidekiq ... Finished Reply by email is disabled in config/gitlab.yml Checking LDAP ... Server: ldapmain LDAP authentication... Success LDAP users with access to your GitLab server (only showing the first 100 results) Checking LDAP ... Finished Checking GitLab ... Git configured correctly? ... yes Database config exists? ... yes All migrations up? ... yes Database contains orphaned GroupMembers? ... no GitLab config exists? ... yes GitLab config up to date? ... yes Log directory writable? ... yes Tmp directory writable? ... yes Uploads directory exists? ... yes Uploads directory has correct permissions? ... yes Uploads directory tmp has correct permissions? ... skipped (no tmp uploads folder yet) Init script exists? ... skipped (omnibus-gitlab has no init script) Init script up-to-date? ... skipped (omnibus-gitlab has no init script) Projects have namespace: ... can't check, you have no projects Redis version >= 2.8.0? ... yes Ruby version >= 2.3.5 ? ... yes (2.4.5) Git version >= 2.9.5 ? ... yes (2.18.1) Git user has default SSH configuration? ... yes Active users: ... 2 Checking GitLab ... Finished
Если вам нужна аутентификация LDAP на вашем сервере GitLab, прочитайте:
Как настроить аутентификацию GitLab FreeIPA
Тут разве нет ошибки?
Кей и серт местами перепутаны, не?
nginx[‘ssl_certificate’] = “/etc/gitlab/ssl/git.example.com.key”
nginx[‘ssl_certificate_key’] = “/etc/gitlab/ssl/git.example.com.crt”
Спасибо, поправили