Полный цикл в digital

Установка SSL сертификата Let's Encrypt на Nginx + Apache

Let’s Encrypt — это центр сертификации, позволяющий легко получать бесплатные сертификаты TLS/SSL, что в свою очередь позволяет использовать на веб-серверах шифрованный трафик HTTPS. Процесс упрощается посредством предоставления полномочий Certbot, который автоматизирует весь процесс получения и установки сертификата в Apache, так и Nginx.

Установка Certbot

Обновляем список пакетов сервера:

sudo apt update

Обновляем пакеты сервера:

sudo apt upgrade

Установка Certbot:

sudo apt install certbot

Установка плагина:

sudo apt install python3-certbot-nginx

Проверка конфигурации Nginx

Чтобы настраивать и устанавливать SSL автоматически, Certbot необходимо найти правильный виртуального хост в конфигурации Nginx. В виртуальном хосте директива server_name, должна соответствовать реальному существующему домену с настроиными DNS записями, для которого вы запрашиваете сертификат.

Для проверки откроем файл конфигурации вашего домена:

sudo nano /etc/nginx/sites-available/название_домена.com

Найдем существующую строку server_name. Конфигурация должна выглядеть следующим образом, причем для Let’s Encrypt эти домены разные и на них должны быть настроины DNS записи:

server_name название_домена.com www.название_домена.com;

Если все нормально, закройте редактор и переходите к следующему шагу. Если нет, проведите обновление. Затем сохраните файл, закройте редактор и проверьте синтаксис внесенных правок конфигурации:

sudo nginx -t

Если синтаксис файла конфигурации будет правильным, перезагрузите Nginx для загрузки новой конфигурации:

sudo systemctl reload nginx

Настройка файрвола

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

В Ubuntu используется оболочка под названием UFW или Uncomplicated FireWall. В этом разделе мы разберём, как выполняется настройка UFW Ubuntu.

Проверка состояния файрвола:

sudo ufw status

Включение файрвола:

sudo ufw enable

Отключение файрвола:

sudo ufw disable

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

sudo ufw reset

Обратите внимание, что если вы работаете по SSH, или запущен Apache то перед тем, как включать брандмауэр, нужно добавить правило разрешающее работу, иначе не будет доступа к серверу или сайту.

Чтобы создать разрешающее правило, используется команда allow. Вместо allow могут использоваться и запрещающие правила ufw - deny и reject.

Смотрим текущие настройки:

sudo ufw status

Если на веб-сервере разрешен только трафик HTTP, будет выглядеть так:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
Nginx HTTP                 ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
Nginx HTTP (v6)            ALLOW       Anywhere (v6)

Чтобы разрешить трафик HTTPS, активируйте профиль Nginx Full:

sudo ufw allow 'Nginx Full'

Удалите лишний профиль Nginx HTTP:

sudo ufw delete allow 'Nginx HTTP'

Смотрим текущие настройки:

sudo ufw status

Теперь ваш статус должен выглядеть следующим образом:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
Nginx Full                 ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
Nginx Full (v6)            ALLOW       Anywhere (v6)

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

Certbot предоставляет широкий выбор способов получения сертификатов SSL с помощью плагинов: Плагин Nginx изменит конфигурацию Nginx и перезагрузит ее, когда это потребуется. Для использования этого плагина введите следующую команду:

sudo certbot --nginx -d название_домена.com -d www.название_домена.com

Эта команда запускает certbot с плагином --nginx, используя опцию -d для указания доменных имен, для которых мы хотим использовать сертификат.

Если первый запуск certbot, вам будет предложено указать email и принять условия соглашения. После этого certbot свяжется с сервером Let’s Encrypt и отправит запрос подтверждения домена по DNS записям:

-- вводим адрес электронной почты
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator nginx, Installer nginx
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): admin@example.com
-- соглашаемся с политикой
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory (A)gree/(C)ancel: A
-- разрешение на email рассылку
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom. (Y)es/(N)o: n

Предпочитаемые варианты настройки HTTPS:

-- не разрешаем прописать автоматическое перенаправление с http на https
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1
-- пути сертификатов и дата окончания
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem
Your cert will expire on 2020-08-18. To obtain a new or tweaked
version of this certificate in the future, simply run certbot again
with the "certonly" option. To non-interactively renew *all* of
your certificates, run "certbot renew"
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
Donating to EFF:                    https://eff.org/donate-le

Ваши сертификаты загружены, установлены и активированы. Попробуйте перезагрузить веб-сайт с помощью https:// и посмотрите на индикатор безопасности в браузере.

Проверка автоматического обновления Certbot

Сертификаты Let’s Encrypt действительны только в течение 90 дней. Это сделано для стимулирования пользователей к автоматизации процесса обновления сертификатов. Установленный нами пакет certbot выполняет это автоматически, добавляя таймер systemd, который будет запускаться два раза в день и автоматически продлевать все сертификаты, истекающиее менее, чем через 30 дней.

Вы можете запросить статус таймера с помощью команды systemctl:

sudo systemctl status certbot.timer
certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
Triggers: ● certbot.service

Чтобы протестировать процесс обновления, можно сделать запуск «вхолостую» с помощью certbot:

sudo certbot renew --dry-run

Если ошибок нет, все нормально. Certbot будет продлевать ваши сертификаты, когда это потребуется, и перезагружать Nginx для активации изменений. Если процесс автоматического обновления когда-нибудь не выполнится, то Let’s Encrypt отправит сообщение на указанный вами адрес электронной почты с предупреждением о том, что срок действия сертификата подходит к концу.

Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг