Данное решение опробовано на Linux Debian 12/11/10 У вас должен быть root доступ к серверу Основано на данное статье
Защитить Nginx с помощью бесплатного сертификата Let’s Encrypt.
Для работы с сертификатами нам необходимо установить утилиту Certbot на ваш сервер. Certbot - это мощный инструмент, который упрощает процесс получения и настройки SSL-сертификатов от Let’s Encrypt. Можно установить его как отдельное приложение (смотрите в оригинальной статье). Я же установлю его в качествет snap пакета
Перед установкой Certbot очень важно убедиться, что репозитории пакетов и существующие пакеты в вашей системе Debian обновлены.
sudo apt update
sudo apt upgrade
Установим snapd
sudo apt install snapd
Обновим ядро snap
snap install core; snap refresh core
Выполним команду для установки Certbot в качестве snap пакета
snap install --classic certbot
В ответ получим:
root@vps:~# snap install --classic certbot
certbot 2.6.0 from Certbot Project (certbot-eff✓) installed
root@vps:~#
Мы предпологаем, что у Вас уже конфигурация для вашего домена в Nginx. К примеру возьмем какой-нибудь адрес site.local Отрываем файл конфигурации домена и в секцию server добавим настройку:
location ~ /.well-known {
root /etc/nginx/html;
allow all;
}
Папка может быть любой (я указал на ту, которую nginx создал автоматически). Главное, чтобы у этой папки был доступ на запись.
Для чего это нужно? При запросе сертификата Let’s Encrypt должен удостовериться, что сайт доступен и принадлежит Вам. Certbot создает в этой папке файл id и отправляем id на сервис проверки. Let’s Encrypt попытается проверить доступ по адресу http:\/\/site.local\/.well-known\/…\/<id>.html Проверяем конфигурацию Nginx
nginx -t
Если все хорошо, перезагружаем конфигурацию:
service nginx reload
Для выпуска сертификата нужно выполнить команду:
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email <your email> -d site.local
Обратите внимание, что необходимо указать email Флаг –nginx подскажет Certbot’у, что мы используем nginx. Certbot найдет файл конфигурации и пропишет все пути к файлам, а также пропишет дополнительные настройки:
В случае успеха мы получим:
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/site.local/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/site.local/privkey.pem
Your cert will expire on 2023-12-05. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le
Так как сертификат выпускаем сроком на 3 месяца, необходимо его обновлять. Для автоматического обновления можно добавить задачу в crontab.
sudo crontab -e
Затем добавьте следующую строку в нижнюю часть файла. Эта строка устанавливает ежедневную проверку обновления в 3:00 утра:
0 3 * * * certbot renew --quiet