Як захистити сервер GitLab за допомогою SSL-сертифіката
У наших попередніх статтях ми розповідали про встановлення GitLab CE на дистрибутиви Ubuntu, Debian, CentOS та Fedora Linux. У сьогоднішній статті ми розглянемо, як можна захистити сервер GitLab за допомогою SSL-сертифіката. Доступ до GitLab буде здійснюватися за протоколом HTTPS.
Є два сценарії, які ми розглянемо для налаштування доступу GitLab HTTPS:
- Безпечний сервер GitLab з комерційним SSL сертифікатом – наприклад, DigiCert, Comodo тощо
- Безпечний сервер GitLab з SSL-сертифікатом Let’s Encrypt
Безпечний сервер GitLab з комерційним SSL-сертифікатом
Комерційні SSL-сертифікати – це надійний сертифікат DV (Domain Validation), який підтримується всіма популярними веб-браузерами. Ви придбаєте цей сертифікат у надійного комерційного центру сертифікації (CA) або торгового посередника, такого як Comodo, DigiCert, GeoTrust SSL2BUY тощо.
Після покупки сертифіката завантажте файл Сертифіката і покладіть його з закритим ключем в каталог./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'
У розділі увімкніть Nginx і надайте ключ SSL і шляхи до сертифіката.## GitLab NGINX
nginx['enable'] = true
nginx['client_max_body_size'] = '250m'
nginx['redirect_http_to_https'] = true
nginx['ssl_certificate'] = "/etc/gitlab/ssl/git.example.com.crt"
nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/git.example.com.key"
nginx['ssl_protocols'] = "TLSv1.1 TLSv1.2 TLSv1.3"
Інші налаштування SSL коментуються, ви можете прочитати їх і внести зміни, які підходять для вашого розгортання. Коли закінчите, виконайте наступну команду, щоб внести зміни:
sudo gitlab-ctl reconfigure
Зачекайте, поки команда завершить виконання, а потім перейдіть за URL-адресою, щоб увійти на панель керування GitLab.https://git.example.com
Безпечний сервер GitLab з SSL-сертифікатом Let’s Encrypt
Відкрийте файл і знайдіть розділ./etc/gitlab/gitlab.rb
Let's Encrypt integration
Зверніть увагу, що вам потрібне доменне ім’я з дійсним записом, що вказує на ваш сервер GitLab, щоб отримати сертифікат Let’s 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. Щоб перевірити налаштування GitLab, виконайте команду:https
$ 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