Gitea — это легковесный сервер для размещения Git-репозиториев, который можно запустить на собственном сервере. Об установке я писал в статье Установка Gitea на CentOS с помощью Snap. По умолчанию Gitea работает через HTTP, но для обеспечения безопасности соединения рекомендуется включить HTTPS. В этой статье подробно рассмотрим процесс перевода Gitea с HTTP на HTTPS с использованием встроенного сервера.
Статья актуальна для всей линейки операционных систем, основанных на Red Hat, включая RHEL, CentOS, Rocky Linux и AlmaLinux, где Gitea установлен через snap.
Включение HTTPS в Gitea
Для настройки HTTPS необходимо отредактировать файл конфигурации app.ini, который отвечает за параметры работы Gitea. Файл конфигурации в случае установки Gitea через Snap находится по пути:
/var/snap/gitea/common/conf/app.ini
Добавьте в секцию [server] следующие параметры:
[server]
PROTOCOL = https
ROOT_URL = https://git.vashdomen.ru:3000/
CERT_FILE = /var/snap/gitea/common/certs/gitea.crt
KEY_FILE = /var/snap/gitea/common/certs/gitea.key
ROOT_URL скорее всего у вас уже прописан, поэтому замените в нём http на https. Порт оставьте тот, который у вас был прописан изначально.
Создание самоподписанных SSL-сертификатов
Для работы HTTPS необходим SSL-сертификат. В этом разделе мы создадим самоподписанный сертификат, который подойдет для тестирования работы сервиса.
Самоподписанные сертификаты предназначены только для проверки работы сервиса. В браузере они будут вызывать предупреждения о недоверенном соединении. В дальнейшем необходимо использовать сертификаты от доверенного центра сертификации (например, Let’s Encrypt).
Сначала создадим папку, в которой будут храниться сертификаты:
sudo mkdir -p /var/snap/gitea/common/certs
Далее используем OpenSSL для создания самоподписанного сертификата:
sudo openssl req -x509 -newkey rsa:4096 -keyout /var/snap/gitea/common/certs/gitea.key -out /var/snap/gitea/common/certs/gitea.crt -days 365 -nodes
При выполнении команды потребуется ввести информацию о сертификате (страна, город, организация и т. д.).
Перезапуск Gitea
После внесения изменений необходимо перезапустить Gitea, чтобы настройки вступили в силу:
sudo snap restart gitea
Теперь Gitea будет работать по HTTPS, используя самоподписанный сертификат.
Замена самоподписанного сертификата на доверенный
Чтобы избежать предупреждений о недоверенном сертификате, необходимо заменить самоподписанный сертификат на сертификат, выданный доверенным центром сертификации.
Вы можете выпустить (купить) сертификат в любом доверенном центре и потом заменить самоподписанный сертификат на доверенный или воспользоваться бесплатным сервисом Let’s Encrypt.
Получим и установим сертификат от Let’s Encrypt. Процесс получения сертификата через certbot:
Установите Certbot:
sudo dnf install certbot
Получите сертификат:
sudo certbot certonly --standalone -d git.vashdomen.ru
Сертификаты будут сохранены в каталоге /etc/letsencrypt/live/git.vashdomen.ru/. Обновите app.ini, указав правильные пути:
CERT_FILE = /etc/letsencrypt/live/git.vashdomen.ru/fullchain.pem
KEY_FILE = /etc/letsencrypt/live/git.vashdomen.ru/privkey.pem
Перезапустите Gitea.
После этого Gitea будет работать с доверенным сертификатом, и пользователи не будут получать предупреждения о безопасности в браузере. Certbot будет автоматически обновлять сертификаты.