Skip to content

Настройка SSL

Полноценная работа приложения возможна только по протоколу HTTPS. Для этого потребуется выпустить сертификат.

Получение сертификата

Получить сертификат можно несколькими способами:

  1. Let’s Encrypt - простой и бесплатный способ получить сертификат через https://certbot.eff.org/
  2. Приобрести сертификат у любого из многочисленных Удостоверяющих Центров
  3. Если по каким-то причинам нельзя получить доверенный сертификат - можно сгенерировать самоподписанный командой:
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

  1. Удалите строку
listen 443;
  1. Раскомментируйте строки и укажите корректное название файлов ваших сертификатов, важно не менять пути, только названия файлов:
listen 443 default_server ssl;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;

И перезапустите контейнеры.

Certbot

Вы можете получить бесплатный сертификат, если ваш сервер доступен извне. Для этого установите Certbot на сервер или запустите его в контейнере:

  1. Остановите контейнеры приложения docker compose down

  2. От пользователя 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
  1. Скопируйте сертификаты (место 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
  1. Измените конфиг 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;
}