En

Установка бесплатного SSL-сертификата Let's Encrypt с автоматическим продлением, для домена на проекте CRYSTAL v1.0


Перед работой с данной инструкцией, необходимо подключить домен.


1. Изменение файла .env.prodDomain в frontend части, для работы через протокол - 'https', и сборка проекта для домена.


Измените примерный текст на название вашего домена и введите команду:

cd /var/www/crystal/frontend && rm -vr ./env/.env.prodDomain && echo VITE_API_BASE_URL=https://ВашДомен/api > ./env/.env.prodDomain && npm run buildProdDomain

Пример:

cd /var/www/crystal/frontend && rm -vr ./env/.env.prodDomain && echo VITE_API_BASE_URL=https://crysty.ru/api > ./env/.env.prodDomain && npm run buildProdDomain


2. Изменение файла .env.prodDomain в backend части проекта.


Введите команду:

cd /var/www/crystal/backend && nano env/.env.prodDomain

В открывшимся окне, измените значение переменной - 'CORS_ORIGIN', с 'http://ВашДомен' на 'https://ВашДомен':


Далее, добавьте переменную - 'COOKIE_SECURE_STATUS':

COOKIE_SECURE_STATUS=true

После добавления кода, нажмите последовательно - 'ctrl + x', 'y', 'Enter'.


* При значении - 'Secure: true', куки отправляются только через HTTPS, что обеспечивает шифрование всего содержимого запроса, включая авторизационный JWT. Это защищает токен от перехвата в открытых или небезопасных сетях, например общественный Wi-Fi, где злоумышленники могут анализировать незашифрованный трафик. Также это предотвращает атаки - MITM, когда атакующий встраивается между клиентом и сервером и перехватывает или подменяет данные, если соединение идёт не по HTTPS.


Введите команду:

systemctl restart nginx && 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, необходимо прочитать вопросы и дать некоторые согласия.


* Если во время генерации будет ошибка:
An unexpected error occurred:
AttributeError: can't set attribute

Введите команду - 'certbot --nginx -d ВашДомен -d www.ВашДомен', заново.


Когда сертификат будет готов, вы увидите подобный текст в консоли:

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


Вы можете сделать сайт быстрее и безопаснее, включив поддеркжу протокола HTTP/2, следуя данной инструкции.

Проект тестируется в

BrowserStack

Поделиться

Копировать

BTC (Network BTC) - 1C2EWWeEXVhg93hJA9KovpkSd3Rn3BkcYm

Ethereum (Network ERC20) - 0x05037ecbd8bcd15631d780c95c3799861182e6b8

Похожие посты

Этот сайт использует файлы cookies. Нажимая кнопку 'Принять' или продолжая пользоваться сайтом, вы соглашаетесь на использование файлов cookies.