Как обезопасить GitLab Server с помощью SSL-сертификата

В наших предыдущих статьях мы рассмотрели установку 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'] = "/etc/gitlab/ssl/git.example.com.key"
nginx['ssl_certificate_key'] = "/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

 

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40