Как получить бесплатный SSL-сертификат для сайта Nginx

SSL-сертификат в современном мире является обязательной нормой, без которой современные браузеры очень недоверительно будут относиться к вашему сайту. Благо, есть возможность получать его бесплатно.

Предполагается, что вы уже настроили виртуальные хосты Nginx, ваш сайт открывается по http, а 443 порт открыт.

Установка зависимостей

Для получения SSL-сертификата мы воспользуется уже созданным пакетом Certbot, благодаря которому на установку мы потратим не более 10 минут, а также он будет автоматически обновлять сертификат когда он истечет.

Сначала обновляем пакеты в системе:

sudo apt update

После установите Python (Certbot написан на питоне):

sudo apt install python3 python3-venv libaugeas0

После необходимо создать виртуальное окружение и войти в него. В нём мы как раз и установим certbot:

sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip

Создание виртуального окружения считается хорошим тоном, и позволяет изолировать certbot, чтобы не ставить его во всю систему

Настройка Certbot

Теперь установите сам Certbot:

sudo /opt/certbot/bin/pip install certbot certbot-nginx

И будет хорошо создать символическую ссылку на него, чтобы можно было запускать просто по названию:

sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot

Теперь есть выбор: запустить certbot с автоматической настройкой для nginx или просто получить сертификат, чтобы потом самому его импортировать в конфиг. Сейчас мы рассмотрим первый:

sudo certbot --nginx

Сначала нас просят ввести email, на который будут присылаться уведомления безопасности, а также сообщения о продлении сертификата, после просят ознакомиться и принять условия (нужно написать Y или Yes), а вторым пунктом спрашивают наше согласие на получение всяких рассылок, тут разумнее будет отказаться, написав N или No, но в примере я согласился

После этого получаем сообщение о том, что аккаунт зарегистрирован, и требуется ввести домен, на котором будет ssl, я для примера выдам его на поддомен, в вашем же случае необходимо ввести просто адрес сайта, например YourSite.Pro

Поздравляю, ssl-сертификат создан! Так как установка была автоматическая, предлагаю посмотреть, что certbot изменил в конфигурации виртуального хоста:

Как можно заметить, он создал прослушивание 443 порта, автоматически прописал пути до ssl сертификата, а также сделал автоматический редирект с http на https

И действительно — всё работает.

Автоматическое обновление сертификата

Сертификат, который выдает нам Let’s Encrypt действителен всего 90 дней, и его надо продлевать, но благо, это можно делать автоматически, для этого поставим задачу в cron:

echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null

Также, официальный сайт рекомендует раз в месяц обновлять certbot, чтобы поддерживать все функции в актуальном состоянии:

sudo /opt/certbot/bin/pip install --upgrade certbot certbot-nginx

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *