Установка и настройка автоматического продления, бесплатного SSL-сертификата Let's Encrypt, для домена на проекте CRYSTAL v1.0
25.02.2025
Содержание:
Перед работой с данной инструкцией, необходимо подключить домен.
1. Изменение файла .env.prodDomain в frontend части, для работы через протокол - 'https', и сборка проекта для домена.
Измените примерный текст на название вашего домена и введите команду:
cd /var/www/crystal/frontend && rm -vr ./env/.env.prodDomain && echo VITE_BASE_URL=https://ВашДомен/api > ./env/.env.prodDomain && npm run buildProdDomain
Пример:
cd /var/www/crystal/frontend && rm -vr ./env/.env.prodDomain && echo VITE_BASE_URL=https://crysty.ru/api > ./env/.env.prodDomain && npm run buildProdDomain
2. Изменение файла .env.prodDomain в backend части проекта.
Для безопасной работы Cookie, атрибуту - 'Secure', будет присвоен статус - 'true'. Статус будет присваиваться, через переменную - 'COOKIE_SECURE_STATUS'.
Введите команды последовательно:
cd /var/www/crystal/backend && rm -vr ./env/.env.prodDomain && echo PRODUCTION_STATUS=true > ./env/.env.prodDomain
echo COOKIE_SECURE_STATUS=true >> ./env/.env.prodDomain && pm2 restart 0
3. Установка certbot.
Введите команду:
apt-get install certbot && apt install python3-certbot-nginx
4. Генерация SSL-сертификата Let's Encrypt.
Введите команду и замените примерный текст на ваш домен:
certbot --nginx -d ВашДомен -d www.ВашДомен
пример:
certbot --nginx -d crysty.ru -d www.crysty.ru
Далее, введите адрес вашей электронной почты. После ввода email, необходимо прочитать вопросы и дать некоторые согласия.
Когда сертификат будет готов, вы увидите подобный текст в консоли:
Successfully received certificate.
Nginx перезагрузится с новыми настройками.
Два раза в день, таймер - certbot, будет проверять статус сертификата, и автоматически продлит сертификат, если подходит время его окончания.
Можно убедиться в наличии таймера, введя команду:
systemctl status certbot.timer
После ввода команды, должно быть подобное сообщение:
● certbot.timer - Run certbot twice daily Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; preset: enabled) Active: active (waiting) since Tue 2024-01-23 04:50:45 UTC; 1h 23min ago Trigger: Tue 2024-01-23 20:06:16 UTC; 13h left Triggers: ● certbot.service Jan 23 04:50:45 crystal-vm-1 systemd[1]: Started certbot.timer - Run certbot twice daily.
5. Перезапуск certbot таймера, после перезагрузки ВМ.
Введите команду:
systemctl enable --now certbot.timer
Откройте сайт проекта с вашем доменом, через протокол - 'https', SSL-сертификат должен работать.
Примечание: Для более удобного восприятия и быстрой установки, эта инструкция является упрощённой. При выполнении команды, для проверки конфигурации веб-сервера:
nginx -t
может появиться предупреждение:
[warn] 1672995#1672995: conflicting server name "www.ВашДомен" on 0.0.0.0:443, ignored
Это не является ошибкой и не влияет на работу сайта. Сервер продолжит функционировать корректно, а SSL-сертификат будет работать и обновляться автоматически.
6. Включение поддержки протокола HTTP/2 в Nginx.
HTTP/2 — это современная версия протокола HTTP, призванная устранить ограничения предыдущей версии (HTTP/1.1) и значительно повысить производительность веб-приложений. Он внедряет ряд технических усовершенствований, которые существенно ускоряют передачу данных между клиентом и сервером.
Для включения поддержки протокола HTTP/2, последовательно выполните команды ниже:
nano /etc/nginx/sites-available/crystal
Найдите в открывшимся окне все строки вида:
listen 443 ssl;
и замените их на:
listen 443 ssl http2;
После замены, нажмите последовательно - 'ctrl + x', 'y', 'Enter'.
Далее, введите команду:
systemctl restart nginx && curl -I --http2 https://ВашДомен
Первая строка вывода, должна содержать - 'HTTP/2 200', это означает, что подключение протокола - HTTP/2, прошло успешно.
Вы можете сделать сайт, намного безопаснее, добавив некоторые правила к серверу Nginx, по этой инструкции.
Поделиться
BTC (Network BTC) - 1C2EWWeEXVhg93hJA9KovpkSd3Rn3BkcYm
Ethereum (Network ERC20) - 0x05037ecbd8bcd15631d780c95c3799861182e6b8
Прокомментировать в