Appearance
Настройка SSL
Полноценная работа приложения возможна только по протоколу HTTPS. Для этого потребуется выпустить сертификат.
Получение сертификата
Получить сертификат можно несколькими способами:
- Let’s Encrypt - простой и бесплатный способ получить сертификат через https://certbot.eff.org/
- Приобрести сертификат у любого из многочисленных Удостоверяющих Центров
- Если по каким-то причинам нельзя получить доверенный сертификат - можно сгенерировать самоподписанный командой:
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout nginx.key -out nginx.crt
Подключение сертификата
Теперь полученный сертификат и ключ нужно прописать в конфигурации nginx
.
Docker установка
Положите сертификат и ключ в папку nginx/ssl
(/opt/bearpass/docker/nginx/ssl
)
В конфиге /nginx/conf/conf.d/app.conf
- Удалите строку
listen 443;
- Раскомментируйте строки и укажите корректное название файлов ваших сертификатов, важно не менять пути, только названия файлов:
listen 443 default_server ssl;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
И перезапустите контейнеры.
Certbot
Вы можете получить бесплатный сертификат, если ваш сервер доступен извне. Для этого установите Certbot на сервер или запустите его в контейнере:
Остановите контейнеры приложения
docker compose down
От пользователя
root
выполните команду, она потребует ввода email адреса (для информации о продлении сертификата) и домена:
docker run -it --rm --name certbot \
-v "/etc/letsencrypt:/etc/letsencrypt" \
-v "/var/lib/letsencrypt:/var/lib/letsencrypt" \
-p 80:80 certbot/certbot certonly --standalone --agree-tos --no-eff-email --preferred-challenges http
- Скопируйте сертификаты (место
demo.bearpass.ru
напишите свой домен):
cp /etc/letsencrypt/live/demo.bearpass.ru/privkey.pem /opt/bearpass/docker/nginx/ssl/privkey.pem
cp /etc/letsencrypt/live/demo.bearpass.ru/fullchain.pem /opt/bearpass/docker/nginx/ssl/fullchain.pem
- Измените конфиг
nginx
(выполните п.2 из инструкции выше)
Ручная установка
Если вы использовали https://certbot.eff.org/, то он сам пропишет нужные конфиги, дополнительных действий не требуется.
Положите сертификат и ключ в папку /etc/nginx/ssl
. В файл /etc/nginx/sites-available/<hostname>
добавьте дополнительный блок server
(bearpass.ru
замените на ваш домен, проверьте названия сертификата и ключа):
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
server_name bearpass.ru;
set $BP_ROOT /var/www/bearpass;
include /var/www/bearpass/nginx.conf;
}
И перезапустите nginx
:
service nginx restart
Настройка редиректа
После успешной настройки https
нужно сделать редирект с http
. Для этого в конфигурации nginx
замените весь блок server
в котором указано listen 80
на следующий код (bearpass.ru
замените на ваш домен в двух местах):
server {
listen 80;
server_name bearpass.ru;
return 301 https://$server_name$request_uri;
}