Параметр и имя сертификата ssl уже используются

13 августа, 2018 11:35 дп

GitLab CE (Community Edition) – это приложение с открытым исходным кодом, предназначенное для хранения репозиториев Git, которое также предоставляет функции разработки (например, отслеживание ошибок). Вы можете разместить это приложение в своей собственной инфраструктуре. GitLab обеспечивает гибкость при развертывании внутреннего хранилища для команды разработчиков, а также позволяет другим пользователям (например, сторонним участникам разработки) публиковать свои собственные проекты.

Приложение GitLab легко установить и настроить на своей машине. Данный мануал поможет вам в этом.

Содержание
  1. Требования
  2. Установка зависимостей
  3. Установка GitLab
  4. Настройка брандмауэра
  5. Настройка GitLab
  6. Настройка GitLab с помощью веб-интерфейса
  7. Настройка профиля
  8. Изменение имени пользователя
  9. Добавление SSH-ключа
  10. Ограничение или блокировка открытой регистрации (опционально)
  11. Блокировка регистрации
  12. Ограничение регистрации по домену
  13. Ограничение возможности создавать проекты
  14. Обновление сертификатов Let’s Encrypt
  15. Заключение
  16. Установка клиента Let’s Encrypt
  17. Подготовка к проверке прав на домен
  18. Запрос сертификата Let’s Encrypt
  19. Настройка GitLab для поддержки сертификата Let’s Encrypt
  20. Настройка брандмауэра для поддержки трафика HTTPS
  21. Обновление настроек GitLab
  22. Автоматическое обновление сертификата Let’s Encrypt
  23. GitLab Pages custom domains (FREE)
  24. Set up a custom domain
  25. Requirements
  26. Steps
  27. Get the verification code
  28. Set up DNS records
  29. Verify the domain’s ownership
  30. Add more domain aliases
  31. Adding an SSL/TLS certificate to Pages
  32. Manual addition of SSL/TLS certificates
  33. Force HTTPS for GitLab Pages websites
  34. Troubleshooting
  35. GitLab Pages Let’s Encrypt certificates (FREE)
  36. Enabling Let’s Encrypt integration for your custom domain
  37. Message «GitLab is obtaining a Let’s Encrypt SSL certificate for this domain. This process can take some time. Please try again later. » hangs for more than an hour
  38. Nginx Series Overview
  39. Configure Nginx
  40. Configure GitLab
  41. Configure GitLab-Shell
  42. Restart GitLab and Nginx
  43. Additional Resources
  44. Some docs on the Internet
  45. Review the SSL certificate content
  46. Generate self-signed SAN SSL certificate
  47. Review the SAN SSL certificate
  48. Save the SSL certificate
  49. Configure HTTPS on Gitlab
  50. Update Gitlab config
  51. Check the website SSL certificate from the command line
  52. By certuil for Windows only
  53. Update the certificate in case of renewal

Требования

  • Свежий сервер Ubuntu 18.04, настроенный по этому мануалу.
  • 2 ядра, 8 Гб RAM минимум (согласно требованиям GitLab к аппаратному обеспечению). Использовать своп-пространство не рекомендуется.
  • Домен, направленный на ваш сервер. Здесь мы используем условный домен example.com.

Установка зависимостей

Сначала нужно установить программы, которые обеспечат корректную работу приложения GitLab. Все они находятся в официальном репозитории Ubuntu.

Обновите индекс пакетов и установите зависимости приложения:

sudo apt update
sudo apt install ca-certificates curl openssh-server postfix

Возможно, некоторые из этих программ вы установили ранее. При установке postfix выберите Internet Site. На следующем экране введите домен или IP сервера, чтобы система могла отправлять уведомления.

Установка GitLab

Процесс установки GitLab очень прост. Для этого можно использовать загрузочный сценарий.

Перейдите в каталог /tmp и загрузите в него сценарий.

cd /tmp
curl -LO https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh

При желании вы можете ознакомиться с содержимым сценария (также его можно найти по этой ссылке).

Убедившись, что сценарий не выполнит никаких лишних действий, вы можете запустить его:

sudo bash /tmp/script.deb.sh

Сценарий подготовит сервер к поддержке репозиториев GitLab. Благодаря этому вы сможете управлять пакетами GitLab с помощью стандартных инструментов управления пакетами, предлагаемых операционной системой. Теперь можно установить приложение GitLab:

sudo apt install gitlab-ce

Эта команда установит все необходимые компоненты.

Настройка брандмауэра

После установки GitLab нужно открыть порт приложения в брандмауэре (если вы следовали руководству по начальной настройке сервера, вы заблокировали порты с помощью ufw).

Просмотрите текущее состояние брандмауэра:

sudo ufw status
Status: active
To                         Action      From
—                         ——      —-
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

На данный момент брандмауэр не блокирует только SSH. Чтобы открыть приложение GitLab, нужно настроить трафик HTTP. Поскольку GitLab поддерживает бесплатные TLS/SSL сертификаты от Let’s Encrypt, можно также включить доступ HTTPS.

Для этого достаточно добавить HTTP и HTTPS в файл /etc/services.

Если ранее вы по какой-то причине не добавили в этот список OpenSSH, сделайте это сейчас.

sudo ufw allow http
sudo ufw allow https
sudo ufw allow OpenSSH

Снова проверьте состояние ufw.

sudo ufw status
Status: active
To                         Action      From
—                         ——      —-
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)

Теперь у вас есть доступ к веб-интерфейсу GitLab.

Настройка GitLab

Прежде чем начать работу с приложением, отредактируйте конфигурации GitLab.

sudo nano /etc/gitlab/gitlab.rb

В начале файла найдите строку external_url. Укажите в ней ваше доменное имя. Вместо http укажите https, чтобы в дальнейшем приложение GitLab могло использовать шифрование при помощи сертификата Let’s Encrypt.

Сохраните и закройте файл. Введите следующую команду, чтобы обновить параметры Gitlab:

sudo gitlab-ctl reconfigure

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

Настройка GitLab с помощью веб-интерфейса

Чтобы получить доступ к интерфейсу GitLab, перейдите по ссылке:

На экране появится приветственная страница, которая предложит выбрать пароль администратора.

Выберите и подтвердите надёжный пароль и нажмите Change your password.

После этого появится форма аутентификации. Введите свои учётные данные:

Нажмите Sign in. На экране появится страница, которая предложит вам добавить новые проекты.

Теперь можно внести поправки в настройки GitLab.

Настройка профиля

Добавьте новые данные в свой профиль. При установке GitLab заполняет профиль данными по умолчанию, которые рекомендуется изменить.

Чтобы отредактировать профиль, кликните на иконку пользователя в правом верхнем углу интерфейса. В выпадающем меню выберите Settings. Вы попадёте в раздел настроек Profile, где вы сможете выбрать новую аватарку, указать имя, адрес электронной почты и т.п.

По умолчанию приложение использует в полях Name и Email такие значения:

Замените их своими данными. Выбранное вами имя будут видеть другие пользователи, а электронная почта будет использоваться уведомлений интерфейса Git и т.д.

Чтобы обновить данные, нажмите кнопку Update Profile settings.

На предоставленный адрес электронной почты вы получите письмо с подтверждением. Следуйте инструкциям письма, чтобы подтвердить свой аккаунт и начать работу в GitLab.

Изменение имени пользователя

В верхнем меню выберите Account.

По умолчанию аккаунт администратора использует имя root. Очевидно, что такое имя используется очень часто, а потому оно небезопасно и его нужно сразу изменить.

Примечание: Конечно, после изменения имени у вас останутся все права.

Теперь при входе в аккаунт GitLab используйте это имя пользователя вместо root.

Добавление SSH-ключа

В большинстве случаев для взаимодействия между Git и GitLab используются SSH-ключи. Добавьте открытый ключ SSH в аккаунт GitLab.

Если у вас уже есть пара ключей SSH на локальной машине, вы можете просмотреть их:

Команда вернёт объемный результат:

Скопируйте этот ключ и вернитесь в настройки профиля.

Если же команда cat вернула следующее сообщение:

cat: /home/8host/.ssh/id_rsa.pub: No such file or directory

то у вас нет SSH-ключей. Чтобы создать такую пару ключей, введите:

Примите стандартные параметры и выберите надёжный пароль, который защитит ключи.

Просмотрите открытый ключ:

Скопируйте ключ и вернитесь в настройки профиля GitLab. Откройте меню SSH Keys.

В предложенное поле введите скопированный открытый ключ, выберите для него описательное название и нажмите Add key.

Теперь вы можете управлять проектами и репозиториями GitLab с локальной машины, не предоставляя при этом учётных данных GitLab.

Читайте также:  Умные сервисы ГК Уфанет

Ограничение или блокировка открытой регистрации (опционально)

На данный момент посадочная страница вашего экземпляра GitLab позволяет любому пользователю пройти регистрацию и создать аккаунт. Это удобно, если вы разрабатываете общедоступные проекты и поощряете участие в разработке сторонних пользователей. Если же это закрытый проект, вы можете ограничить или совсем заблокировать возможность регистрироваться.  Для этого нажмите на значок гаечного ключа в правом верхнем углу.

На появившейся странице вы увидите общие сведения о своем экземпляре GitLab. Для настройки выберите в выпадающем меню пункт Settings.

В глобальных настройках GitLab вы сможете изменить ряд параметров, в том числе и заблокировать возможность регистрации.

Блокировка регистрации

Чтобы полностью отключить такую возможность, откройте раздел Sign-up Restrictions. Уберите галочку в Sign-up enabled, а затем нажмите Save.

Форма регистрации исчезнет с посадочной страницы приложения.

Ограничение регистрации по домену

Если GitLab поддерживает адреса электронной почты, связанные с одним доменом, вы можете ограничить возможность регистрации на основе этого домена.

Откройте Sign-up Restrictions и поставьте галочку в Send confirmation email on sign-up. Это позволит пользователям регистрироваться только после проверки адреса электронной почты.

Затем добавьте домен (или домены) в белый список, поле Whitelisted domains for sign-ups. Каждый домен должен находиться в отдельной строке.

Whitelisted domains for sign-ups
example.com
*. example.com

Примечание: Символ * включает поддержку алиасов доменов.

Нажмите Save changes. Форма регистрации исчезнет с посадочной страницы приложения.

Ограничение возможности создавать проекты

По умолчанию любой новый пользователь может создать 10 проектов максимум. Если вы хотите привлечь к разработке проекта новых пользователей и при этом ограничить их право создавать новые проекты, откройте Account and Limit Settings.

Вы сможете добавлять новых пользователей вручную, у них будет доступ к внутренним и внешним проектам.

Сохраните новые настройки.

Новые пользователи смогут создавать аккаунты, однако не смогут добавлять новые проекты.

Обновление сертификатов Let’s Encrypt

По умолчанию GitLab имеет запланированную задачу, предназначенную для обновления сертификатов Let’s Encrypt после полуночи каждый четвертый день. Вы можете изменить эти параметры в файле /etc/gitlab/gitlab.rb. Например, если вы хотите обновлять сертификаты каждый 7-й день в 12:30, вы можете настроить задачу следующим образом:

Также вы можете отключить автоматическое обновление сертификатов, добавив в файл /etc/gitlab/gitlab.rb такую строку:

Заключение

Теперь у вас есть рабочий экземпляр GitLab. Вы можете переместить свои проекты и управлять доступом к ним. GitLab регулярно добавляет новые функции и обновляет платформу, поэтому нужно регулярно проверять домашнюю страницу проекта, чтобы быть в курсе любых улучшений или важных изменений.

4 октября, 2016 12:15 пп

GitLab CE (Community Edition) – это приложение с открытым исходным кодом, предназначенное для хранения репозиториев Git, которое также предоставляет функции разработки.

По умолчанию GitLab обслуживает страницы через незашифрованные соединения HTTP. Как и любое другое приложение, обрабатывающее конфиденциальную информацию, GitLab нуждается в настройке TLS/SSL. Таким образом можно защитить базу кода проекта от посторонних вмешательств и предотвратить перехват учётных данных.

Проект Let’s Encrypt бесплатно предоставляет подписанный SSL-сертификат любому сайту или веб-приложению (при условии, что вы можете доказать, что вы являетесь владельцем домена, для которого запрашиваете сертификат). Центру сертификации Let’s Encrypt доверяют все современные браузеры.

Данное руководство поможет настроить GitLab для поддержки SSL-сертификата Let’s Encrypt. Этот сертификат защитит исходящие соединения и конфиденциальные данные от злоумышленников.

  • Сервер Ubuntu 16.04.
  • Предварительно установленное приложение GitLab (руководство по установке можно найти здесь).
  • FQDN. Если у вас нет домена, вы не сможете получить сертификат Let’s Encrypt. Чтобы получить домен, обратитесь к регистратору доменных имен.

Установка клиента Let’s Encrypt

Чтобы получить SSL-сертификат для GitLab, нужно установить клиент Let’s Encrypt.

Клиент Let’s Encrypt был переименован в certbot, но в репозитории Ubuntu 16.04 он по-прежнему называется letsencrypt. Эта версия клиента подойдёт. Обновите индекс пакетов и установите letsencrypt:

sudo apt-get update
sudo apt-get install letsencrypt

После установки клиента Let’s Encrypt нужно подготовить сервер к проверке прав на домен.

Подготовка к проверке прав на домен

Чтобы получить подписанный SSL-сертификат от ЦС Let’s Encrypt, нужно подтвердить права на домен, для которого предназначен этот сертификат. Существует несколько методов подтвердить право собственности на домен, при этом всегда требуется root-доступ к серверу.

Для обслуживания GitLab используется внутренний веб-сервер Nginx, встроенный в само приложение. Это упрощает установку приложения, однако настройка веб-сервера становится сложнее.

Поскольку приложение GitLab использует встроенный веб-сервер Nginx, этот веб-сервер и будет лучшим методом подтверждения прав на домен. Клиент Let’s Encrypt сможет с его помощью обслужить файл через порт 80. Это доказывает, что пользователь, который запрашивает подпись сертификата, имеет права администратора на веб-сервере, а значит – и права на домен.

Для начала создайте фиктивный root-каталог:

sudo mkdir -p /var/www/letsencrypt

Затем настройте веб-сервер Nginx, встроенный в GitLab, для использования этого каталога. Откройте конфигурационный файл GitLab.

Добавьте в него строку, которая введёт пользовательскую директиву в конфигурационный файл Nginx. Найдите в файле раздел GitLab Nginx и добавьте в него такую строку:

После этого в каталоге .well-known, который находится в root-каталоге сервера, появится файл, с помощью которого Let’s Encrypt проверит право на домен.

Обновите настройки Nginx и GitLab:

Сервер готов к проверке прав собственности на домен.

Запрос сертификата Let’s Encrypt

Теперь клиент Let’s Encrypt может подтвердить право на домен и запросить сертификат. Чтобы получить сертификат и отказаться от автоматической настройки веб-сервера, используйте подкоманду certonly.

Версия Let’s Encrypt, которая находится в репозитории Ubuntu 16.04, требует использовать при этом три опции:

  • задать аутентификатор (-a webroot),
  • указать каталог document root (-w /var/www/letsencrypt),
  • указать домен (-d your_domain).

sudo letsencrypt certonly -a webroot -w /var/www/letsencrypt -d your_domain

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

Примите условия использования сервиса Let’s Encrypt; для этого нажмите Agree.

Если ЦС Let’s Encrypt смог подтвердить ваше право на домен, вы увидите:

Все сертификаты и ключи можно просмотреть в каталоге /etc/letsencrypt/live/your_domain:

sudo ls /etc/letsencrypt/live/your_domain
cert.pem  chain.pem  fullchain.pem  privkey.pem

Для настройки сертификата нужны пути к файлам fullchain.pem и privkey.pem.

Настройка GitLab для поддержки сертификата Let’s Encrypt

Теперь нужно настроить приложение GitLab для шифрования трафика через TLS/SSL.

Откройте конфигурационный файл GitLab:

Найдите external_url; скорее всего, на данный момент эта строка содержит примерно такую ссылку:

Замените http на https:

. . .
external_url ‘https://your_domain’
. . .

Найдите раздел GitLab Nginx и добавьте в него следующие строки.

  • Строка ssl_certificate задаёт путь к файлу fullchain.pem.
  • Строка ssl_certificate_key задаёт путь к файлу privkey.pem.

Настройка брандмауэра для поддержки трафика HTTPS

sudo ufw allow https
Rule added
Rule added (v6)

Запросите состояние ufw, чтобы убедиться, что порт открыт.

sudo ufw status
Status: active
To                         Action      From
—                         ——      —-
OpenSSH                    ALLOW       Anywhere
80                         ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80 (v6)                    ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Теперь трафик HTTPS больше не блокируется.

Обновление настроек GitLab

Обновите настройки GitLab, чтобы включить поддержку SSL.

Теперь GitLab принимает трафик HTTPS. Чтобы убедиться в этом, откройте домен сервера GitLab в браузере.

Примечание: Укажите протокол HTTP, чтобы проверить автоматическую переадресацию на HTTPS.

Обратите внимание на адресную строку: браузер должен автоматически перенаправить трафик на HTTPS.

Теперь приложение GitLab защищено шифрованием TLS/SSL.

Автоматическое обновление сертификата Let’s Encrypt

TLS/SSL-сертификаты Let’s Encrypt действительны в течение 90 дней. Чтобы успеть обновить сертификат до истечения срока его действия, настройте автоматическое обновление сертификатов.

Читайте также:  Улучшите свою работу с электронной почтой: руководство по входу в почту Timeweb

Клиент Let’s Encrypt предоставляет для этого подкоманду renew. Она обновит сертификат, до истечения срока которого осталось 30 дней, используя параметры, заданные в запросе последнего сертификата.

Команда автоматически пропустит все сертификаты, до истечения срока которых остаётся более 30 дней, потому её можно запускать часто.

sudo crontab -e

По запросу выберите текстовый редактор.

На экране появится текстовый файл с текущей таблицей crontab. Добавьте в конец файла:

Теперь клиент Let’s Encrypt будет проверять сертификаты каждые 12 часов. Результаты проверки можно просмотреть в каталоге /var/log/le-renew.log.

На обновление сертификата может уйти несколько минут. После этого перезапустите процесс Nginx с помощью команды gitlab-ctl.

Приложение GitLab шифрует трафик с помощью подписанного сертификата TLS/SSL. Теперь вы можете использовать его для управления проектами, размещения кода, настройки непрерывной интеграции и т.д.

GitLab Pages custom domains (FREE)

You can use custom domains:

To use one or more custom domain names:

Set up a custom domain

To set up Pages with a custom domain name, read the requirements and steps below.

Requirements

  • A GitLab Pages website up and running, served under the default Pages domain
    (*.gitlab.io, for GitLab.com).
  • A custom domain name example.com or subdomain subdomain.example.com.
  • Access to your domain’s server control panel to set up DNS records:
    A DNS record (A, ALIAS, or CNAME) pointing your domain to the GitLab Pages server. If
    there are multiple DNS records on that name, you must use an ALIAS record.A DNS TXT record to verify your domain’s ownership.
  • A DNS record (A, ALIAS, or CNAME) pointing your domain to the GitLab Pages server. If
    there are multiple DNS records on that name, you must use an ALIAS record.
  • A DNS TXT record to verify your domain’s ownership.
  • Set either external_http or external_https in /etc/gitlab/gitlab.rb to the IP and port of
    your Pages Daemon.
    If you don’t have IPv6, you can omit the IPv6 address.# Redirect pages from HTTP to HTTPS
    # The secondary IPs for the GitLab Pages daemon
    # The secondary IPs for the GitLab Pages daemon

Steps

To add your custom domain to GitLab Pages:

  • In the upper-right corner, select New Domain.
  • In Domain, enter the domain name.
  • Optional. In Certificate, turn off the Automatic certificate management using Let’s Encrypt toggle to add an SSL/TLS certificate. You can also add the certificate and key later.
  • Select Create New Domain.

Get the verification code

After you add a new domain to Pages, the verification code prompts you. Copy the values from GitLab
and paste them in your domain’s control panel as a TXT record on the next step.

Set up DNS records

  • For root domains, example.com.
  • For subdomains, subdomain.example.com.
  • For both.
For root domains

Root domains (example.com) require:

WARNING:
If you use your root domain for your GitLab Pages website
only, and if your domain registrar supports this feature, you can
add a DNS apex CNAME record instead of an A record. The main
advantage of doing so is that when GitLab Pages IP on GitLab.com
changes for whatever reason, you don’t need to update your A record.
There may be a few exceptions, but this method is not recommended
as it most likely doesn’t work if you set an MX record for your root domain.

For subdomains

Subdomains (subdomain.example.com) require:

For both root and subdomains

There are a few cases where you need to point both the subdomain and root
domain to the same website, for instance, example.com and www.example.com.

  • A DNS A record for the domain.
  • A DNS ALIAS/CNAME record for the subdomain.
  • A DNS TXT record for each.
  • Do not use a CNAME record if you want to point your
    domain.com to your GitLab Pages site. Use an A record instead.
  • Do not add any special chars after the default Pages
    domain. For example, don’t point subdomain.domain.com to
    or namespace.gitlab.io/. Some domain hosting providers may request a trailing dot (namespace.gitlab.io.), though.
  • GitLab Pages IP on GitLab.com has changed
    from 52.167.214.135 to 35.185.44.232 in 2018.

Verify the domain’s ownership

Once you have added all the DNS records:

As soon as your domain becomes active, your website is available through your domain name.

WARNING:
Considering GitLab instances with domain verification enabled,
if the domain can’t be verified for 7 days, it’s removed
from the GitLab project.

Add more domain aliases

You can add more than one alias (custom domains and subdomains) to the same project.
An alias can be understood as having many doors leading to the same room.

  • In GitLab, add the domain to GitLab Pages and get the verification code.
  • In GitLab, verify your domain.
  • Navigate to your domain’s dashboard and select Page Rules
    on the top nav.
  • Select Create Page Rule.
  • Enter the domain www.domain.com and select + Add a Setting.
  • From the dropdown list, choose Forwarding URL, then select the
    status code 301 — Permanent Redirect.
  • Enter the destination URL https://domain.com.

Adding an SSL/TLS certificate to Pages

Read this document for an overview on SSL/TLS certification.

To secure your custom domain with GitLab Pages you can opt by:

Manual addition of SSL/TLS certificates

  • A GitLab Pages website up and running accessible via a custom domain.
  • A PEM certificate: it is the certificate generated by the CA,
    which needs to be added to the field Certificate (PEM).
  • A private key, it’s an encrypted key which validates
    your PEM against your domain.
  • In the upper-right corner, select New Domain.
  • In Domain, enter the domain name.
  • In Certificate, turn off the Automatic certificate management using Let’s Encrypt toggle to add an SSL/TLS certificate.
  • Select Create New Domain.
  • Select Save changes.
  • Add the PEM certificate to its corresponding field.
  • If your certificate is missing its intermediate, copy
    and paste the root certificate (usually available from your CA website)
    and paste it in the same field as your PEM certificate,
    just jumping a line between them.
  • Copy your private key and paste it in the last field.

Do not open certificates or encryption keys in
regular text editors. Always use code editors (such as
Sublime Text, Atom, Dreamweaver, Brackets, etc).

Force HTTPS for GitLab Pages websites

It works with both the GitLab default domain and with your custom
domain (as long as you’ve set a valid certificate for it).

To enable this setting:

  • Select the Force HTTPS (requires valid certificates) checkbox.
  • Select Save changes.

Troubleshooting

dig _gitlab-pages-verification-code.YOUR-PAGES-DOMAIN TXT

Expect the output:

In some cases it can help to add the verification code with the same domain name as you are trying to register.

For a root domain:

For a subdomain:

GitLab Pages Let’s Encrypt certificates (FREE)

The GitLab Pages integration with Let’s Encrypt (LE) allows you
to use LE certificates for your Pages website with custom domains
without the hassle of having to issue and update them yourself;
GitLab does it for you, out-of-the-box.

Let’s Encrypt is a free, automated, and
open source Certificate Authority.

WARNING:
This feature covers only certificates for custom domains, not the wildcard certificate required to run Pages daemon (FREE SELF). Wildcard certificate generation is tracked in this issue.

Читайте также:  Хостинг для сайта: купить виртуальный хостинг | ИХЦ

Before you can enable automatic provisioning of an SSL certificate for your domain, make sure you have:

  • Created a project in GitLab
    containing your website’s source code.
  • Acquired a domain (example.com) and added a DNS entry
    pointing it to your Pages website. The top-level domain (.com) must be a
    public suffix.
  • Added your domain to your Pages project
    and verified your ownership.
  • Verified your website is up and running, accessible through your custom domain.

Enabling Let’s Encrypt integration for your custom domain

Once you’ve met the requirements, enable Let’s Encrypt integration:

  • Turn on the Automatic certificate management using Let’s Encrypt toggle.
  • Select Save changes.

Once enabled, GitLab obtains a LE certificate and add it to the
associated Pages domain. GitLab also renews it automatically.

  • Issuing the certificate and updating Pages configuration
    can take up to an hour.
  • If you already have an SSL certificate in domain settings it
    continues to work until replaced by the Let’s Encrypt certificate.

Introduced in GitLab 13.0.

  • Make sure you have properly set only one CNAME or A DNS record for your domain.
  • Make sure your domain doesn’t have an AAAA DNS record.
  • If you have a CAA DNS record for your domain or any higher level domains, make sure it includes letsencrypt.org.
  • Make sure your domain is verified.

Message «GitLab is obtaining a Let’s Encrypt SSL certificate for this domain. This process can take some time. Please try again later. » hangs for more than an hour

  • Next to the domain name, select Remove.
  • Add the domain again, and verify it.
  • Enable Let’s Encrypt integration for your domain.
  • Make sure you have properly set only one CNAME or A DNS record for your domain.
  • Make sure your domain doesn’t have an AAAA DNS record.
  • If you have a CAA DNS record for your domain or any higher level domains, make sure it includes letsencrypt.org.

Update 19th Sept 2014: We added a reference to the GitLab Omnibus Readme as additional resources at the bottom of this post.

Nginx Series Overview

Before changing any GitLab configuration, you need a valid SSL certificate. In case you already bought a certificate from a certificate authority, you can go straight ahead to the next section. Else, you probably need to generate your own certificate. When using self-signed certificates, browsers will show a message that the page you’re visiting cannot be trusted. Make sure everybody who’ll access the GitLab URL knows this.

# Create a 2048 bit private key
# If the ssl directory doesn’t exist, please create it first
sudo openssl genrsa -out «/etc/nginx/ssl/gitlab.key» 2048

# This command generates the certificate signing request
sudo openssl req -new -key «/etc/nginx/ssl/gitlab.key» -out «/etc/nginx/ssl/gitlab.csr»

You’ll be asked a lot of questions now.

The code above has examples in the fields which you should fill for your certificate. Please set the Common Name/FQDN to the url you’re running GitLab. If you run your GitLab instance on git.yourdomain.com, please your git.yourdomain.com as FQDN!

Now you can finish this up and create the signed certificate:

sudo openssl x509 -req -days 365 -in «/etc/nginx/ssl/gitlab.csr» -signkey «/etc/nginx/ssl/gitlab.key» -out «/etc/nginx/ssl/gitlab.crt»

This certificate is valid for one year (365 days).

Configure Nginx

The GitLab project provides a very useful and handy nginx configuration file. This can be used with some adjustments. Please copy the contents of the GitLab nginx configuration file to your nginx configuration file.

Configure GitLab

Before changing the configuration of GitLab, stop the running instance.

sudo service gitlab stop

Now, navigate to your GitLab installation directory, default is /home/git/gitlab. Use your favorite editor and open config/gitlab.yml configuration file. Change the port to 443 and set https to true.

If you’re having trouble with Gravatar and the profile pictures cannot be resolved correctly, please disable Gravatar support as well.

Configure GitLab-Shell

The GitLab-Shell is responsible for any git interaction. You need to update the configuration to the new HTTPS settings. Navigate to the GitLab-Shell directory, default is home/git/gitlab-shell. Open the config.yml with your favorite editor and change the gitlab_url to use https:// over http://. When using a self-signed certificate, you also have to set self_signed_cert to true.

Restart GitLab and Nginx

The configuration is done. Restart GitLab and Nginx

sudo service gitlab start
sudo service nginx restart

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

You’re done. Go to your domain and check if Gitlab is running. You’ll probably get the warning regarding insecure certificates in case of self-signed certificate usage.

Additional Resources

September 16, 2018

6 minute read

Gitlab-CE default installation goes with HTTPS disable. We need to generate a SSL certificate, and bind it to the HTTPS of Gitlab-CE.

Some docs on the Internet

OpenSSL has the option to generate the certificate in one line, this post splits it into 3 steps (the private key, the request file, and the certificate) in order to get a clear understanding of the certificate generation procedure.

Review the SSL certificate content

DO NOT use password protected certificate key (in case the lack of the switch -nodes for no DES), to remove the password from the key:
openssl rsa -in certificate_before.key -out certificate_after.key

Generate self-signed SAN SSL certificate

Pay attention to -extensions v3_req in the end of the command, it’s the extension tag name in the gitlab.copdips.local.cnf file. If you dont specify it, the output certificate won’t have the extension part, so no SAN neither.

Review the SAN SSL certificate

The default Signature Algorithm has been already SHA256. Some online docs tell to add the switch -sha256 when using openssl req, but it’s deprecated with the new version of OpenSSL. BTW, the RSA private key default bits is 2048. My OpenSSL version on Ubuntu 1804 is OpenSSL 1.1.0g 2 Nov 2017

Save the SSL certificate

/srv/gitlab1083/ssl/ is the physical gitlab location on my Ubuntu server which is pointed to /etc/gitlab/ssl its docker container.

Configure HTTPS on Gitlab

Hereunder the content of uncommented lines in the Gitlab configuration file:

Update Gitlab config

When you changed the configuration file, to take effect:

Check the website SSL certificate from the command line

For Linux :

For Windows with OpenSSL installed:

My OpenSSL is installed with GIT on Windows. GitForWindows installs also many other powerful Linux commands (grep, ssh, tail, and also vim, etc.) ported to Windows.

By certuil for Windows only

You should explicitly download the certificate at first, and then view the content locally, so this method is not cool.
Hope Powershell team can get this done by one single cmdlet in the future Powershell releases.

# try catch is useful if ssl cert is not valid. ServicePoint is always kept even for invalid ssl cert.

Or a nice cmdlet Test-WebServerSSL written by the MVP Vadims Podāns.

Update the certificate in case of renewal

Here is the official doc.

Оцените статью
Хостинги