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 будет автоматически обновлять сертификаты.