Протокол HTTPS, который обеспечивает шифрование трафика между пользователем и сервером, в настоящее время является стандартом для любого сайта. Одним из наиболее доступных решений для получения SSL/TLS-сертификатов, позволяющих использовать протокол HTTPS при подключении к сайту, является Let’s Encrypt – бесплатный автоматизированный центр сертификации. Веб-сервер Angie, как форк Nginx, поддерживает работу с HTTPS, и, что не менее важно, позволяет использовать сертификаты от Let’s Encrypt. Далее разберём, как установить SSL-сертификат Let’s Encrypt на веб-сервер Angie, работающий на VPS под управлением Ubuntu 24.04.
Как установить сертификат Let’s Encrypt на Angie
В качестве примера мы рассмотрим установку сертификата на виртуальный хост your-site-name.ru
, который уже работает на Angie и доступен по протоколу HTTP.
Для получения сертификата Let’s Encrypt мы используем такой инструмент, как Certbot. Он позволяет автоматизировать и тем самым упростить данный процесс. Certbot предстоит проинсталлировать в нашу систему, а это значит, что перед этим необходимо обновить список доступных пакетов:
$ sudo apt update
Чтобы установить актуальную версию Certbot, необходимо воспользоваться службой Snap – системой управления пакетами, которая является разработкой Canonical. Инсталляцию Snap можно произвести с помощью пакетного менеджера apt
:
$ sudo apt install snapd
Далее при помощи Snap установите Certbot:
$ sudo snap install certbot --classic
В данном случае опция --classic
отключает изолированную среду, в которой работает приложение, установленное через Snap, тем самым предоставляя Certbot полный доступ к системе, который нужен для работы с сертификатами. Чтобы проверить корректность установки Certbot, используйте команду, которая выводит версию проинсталлированного пакета:
$ certbot --version
В нашем примере вывод команды сообщает о том, что установленная версия Certbot – 3.1.0.

Получение SSL-сертификата
На данном этапе всё готово к получению сертификата для нашего сайта. Поскольку Certbot не поддерживает Angie напрямую, то для установки SSL-сертификата логично будет использовать webroot-метод. Webroot-метод – это способ подтверждения владения доменом для получения сертификата Let’s Encrypt. При использовании такого метода Certbot создаёт временный файл проверки в директории .well-known/acme-challenge/
внутри корневой папки веб-сайта. После чего Let’s Encrypt отправляет HTTP-запрос, и, если сервер отдаёт правильный файл, Let’s Encrypt выдаёт требуемый сертификат.
Команда для получения сертификата с применением webroot-метода выглядит следующим образом:
$ sudo certbot certonly --webroot -w /var/www/your-site-name.ru/html/ -d your-site-name.ru
В данном случае:
- опция
certonly
говорит о том, что команда запрашивает только сертификат без внесения изменений в настройки веб-сервера; - опция
--webroot -w /var/www/your-site-name.ru/html/
указывает на каталог, в котором содержатся файлы сайта; your-site-name.ru
– домен, для которого запрашивается сертификат.
В процессе работы данная команда попросит ввести адрес электронной почты, который впоследствии будет использоваться для получения важных уведомлений от Let’s Encrypt. Далее необходимо будет согласиться с условиями обслуживания, а также дать своё согласие на передачу адреса электронной почты в компанию Electronic Frontier Foundation, являющуюся партнером-основателем проекта Let’s Encrypt. В результате аккаунт вашего сайта будет зарегистрирован в Let’s Encrypt, и Certbot сохранит файлы приватного ключа и непосредственно сертификата в соответствующих каталогах сервера.

Изменение конфигурации Angie
Если получение SSL-сертификата прошло успешно, далее необходимо внести некоторые изменения в конфигурацию Angie. Для этого нужно отредактировать файл /etc/angie/sites-available/your-site-name.ru
:
$ sudo nano /etc/angie/sites-available/your-site-name.ru
Приведите данный файл конфигурации к следующему виду:
server {
listen 80;
server_name your-site-name.ru www.your-site-name.ru;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
http2 on;
server_name your-site-name.ru www.your-site-name.ru;
ssl_certificate /etc/letsencrypt/live/your-site-name.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-site-name.ru/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384';
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
root /var/www/your-site-name.ru/html;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.well-known/acme-challenge {
root /var/www/letsencrypt;
allow all;
}
}
Первая секция server
открывает порт 80 и производит редирект с HTTP на HTTPS. Во второй секции server
:
- веб-сервер прослушивает порт 443 и включает HTTP/2;
- веб-сервер обслуживает два домена:
your-site-name.ru
иwww.your-site-name.ru
; - параметры
ssl_certificate
иssl_certificate_key
указывают на то, где хранятся файлы приватного ключа и самого сертификата Let’s Encrypt; - параметр
ssl_protocols
говорит о том, какие поддерживаются версии TLS; - в параметре
ssl_ciphers
определяется безопасный набор шифров; - строка
ssl_prefer_server_ciphers on
сообщает о включении принудительного использования серверных шифров; - строка
add_header
содержит параметры HSTS (HTTP Strict Transport Security), а именно:- значение параметра
max-age=31536000
означает, что браузер на один год запомнит, что сайт работает только через HTTPS; - параметр
includeSubDomains
применяет правило ко всем поддоменам; - параметр
preload
включает сайт в список HSTS Preload List – в таком случае браузеры будут автоматически открывать его через HTTPS;
- значение параметра
- строка
root
указывает на корневой каталог сайта; - в параметре
index
перечислены главные файлы сайта; - содержимое секции
location /
указывает на основное правило для обработки запросов; - секция
location ~ \.php$
содержит правила обработки PHP через PHP-FPM; - секция
location ~ /\.well-known/acme-challenge
содержит настройки, применяемые при webroot-методе Let’s Encrypt.
Затем закройте конфигурационный файл, сохранив внесённые изменения. Далее рекомендуется проверить корректность синтаксиса Angie:
$ sudo angie -t
Если ошибок нет, то следующей командой необходимо перезапустить конфигурацию веб-сервера:
$ sudo systemctl reload angie
Поскольку использование одного и того же сертификата ограничено по времени, необходимо обновлять его с определённой периодичностью. Чтобы автоматизировать процесс обновления сертификата, выполните следующую команду:
$ echo "0 3 * * * root certbot renew --quiet && systemctl reload angie" | sudo tee /etc/cron.d/certbot-renew
Данная команда создаёт строку с cron-заданием. Данное задание позволит каждый день в 03:00 проверять, нужно ли обновлять сертификат. Если сертификат истекает через 30 дней или меньше, согласно заданию произойдёт его обновление. Если сертификат обновился, конфигурация веб-сервера будет перезапущена. Перезапуск необходимо произвести, чтобы Angie начал использовать новый сертификат.
Открытие порта протокола HTTPS и проверка доступа к сайту
Если в вашей системе установлен брандмауэр UFW, то чтобы открыть доступ к сайту по порту 443, который используется протоколом HTTPS, следует добавить в брандмауэр правило, разрешающее доступ этому протоколу. Сделать это можно следующей командой:
$ sudo ufw allow https
Проверить, что правило успешно добавлено, можно при помощи команды, которая выводит на экран состояние брандмауэра:
$ sudo ufw status
Вывод данной команды должен содержать соответствующую строку:

И наконец, чтобы убедиться в том, что сайт доступен по HTTPS, откройте браузер и перейдите по адресу https://your-site-name.ru
, где вместо your-site-name.ru
укажите доменное имя вашего сайта.
