8.4 Получение SSL-сертификата от Let's Encrypt и настройка HTTPS
0 из 2 шагов пройдено

Получение SSL-сертификата от Let's Encrypt


Для настройки подключения по HTTPS необходим SSL-сертификат, их выпуском занимаются центры сертификации, эта услуга платная, цены начинаются от 1-2т.р. и более за сертификат на одно доменное имя на один год.

Альтернативой платным сертификатам, может стать бесплатные сертификаты от центра сертификации Let's Encrypt.
На данные момент большое количество сайтов используют сертификаты от Let's Encrypt, в том числе и stepik.org.

Автоматизированное получение и продление сертификатов от Let's Encrypt осуществляется с помощью Certbot, но в данном случае будет использоваться его одноимённый образ.

Для начала остановим и удалим контейнеры:

docker compose -f docker-compose.prod.yml down


Затем отредактируем файл docker-compose.prod.yml, выполним:

vi docker-compose.prod.yml


В секции nginx, в volumes добавим:

    volumes:
      - ./certbot/conf:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot

И откроем 443 порт для HTTPS:

      - 443:443


Теперь добавим новую секцию certbot:

  certbot:
    image: certbot/certbot
    volumes:
      - ./certbot/conf:/etc/letsencrypt
      - ./certbot/www:/var/www/certbot
    command: certonly --webroot --webroot-path=/var/www/certbot/ --email ваш@email --agree-tos --no-eff-email -d имя_вашего_домена
    depends_on:
      - nginx

Примечание: в команде certonly обязательно укажите ваш email и имя вашего домена, это необходимо для получения сертификата!


Зафиксируем изменения в репозитории:

git commit -am "Add certbot to docker-compose.prod.yml"


Создадим файл .gitignore, он необходим чтоб директория certbot, с сертификатами и прочим, не попала в репозиторий:

vi .gitignore


Со следующей строкой:

certbot

Зафиксируем изменения в репозитории:

git add .gitignore
git commit -am "Create .gitignore file"


Создадим директории для certbot, выполним:

mkdir -p certbot/conf
mkdir certbot/www


Перейдём в директорию nginx и отредактируем файл конфигурации fastapi_ecommerce.conf:

cd nginx
vi fastapi_ecommerce.conf


Добавим в файл конфигурации fastapi_ecommerce.conf следующие строки:

    location /.well-known/acme-challenge/ {
        root /var/www/certbot;
    }


Зафиксируем изменения в репозитории:

git commit -am "Add certbot to fastapi_ecommerce.conf"


Вернёмся в директорию проекта и пересоберём образы:

cd ..
docker compose -f docker-compose.prod.yml build


Создадим и запустим контейнеры:

docker compose -f docker-compose.prod.yml up -d


Контейнеры запустились, теперь проверим наличие сертификатов, просмотрим содержимое директории certbot/conf/live:

ls -la certbot/conf/live


В ней должна быть директория с именем вашего домена, просмотрим её содержимое:

ls -la certbot/conf/live/имя_вашего_домена


В данной содержатся ссылки на сертификаты для вашего домена, в следующем шаге мы подключим их.


Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Нет обсуждений. Начните первое.