Как обезопасить Nginx с Let’s Encrypt на Ubuntu 20.04

Ниже по тексту – инструкция, из которой вы узнаете, как можно обезопасить веб-сервер Nginx, установленный на Ubuntu 20.04, при помощи центра сертификации Let’s Encrypt.

Выпуск и подключение сертификата Let's Encrypt

Хостинг TheHost официально поддерживает сертификаты Let’s Encrypt. Сертификаты Let’s Encrypt являются бесплатными, однако при этом функционально ничем не отличаются от классических коммерческих сертификатов центров сертификации Comodo, RapidSSL, Thawte, GeoTrust и др., но при этом имеют ряд особенностей:

1) Сертификаты данного типа являются сертификаты с проверкой домена, поэтому для их выдачи обязательно чтобы доменное имя, для которого формируется сертификат, было активным и ссылалось основной А записью на сервер, на котором формируется сертификат. Для не зарегистрированного, не активного или направленного на другой сервер доменного имени выдать сертификат Let’s Encrypt не возможно.

2) Сертификаты Let’s Encrypt предоставляются только на 3 месяца.

3) Продлить сертификат Let’s Encrypt возможно только по прошествию 2-ух месяцев с момента выдачи.

4) Для продления сертификатов Let’s Encrypt необходимо выпускать новый сертификат в панели управления хостингом.

Для выпуска сертификата Let’s Encrypt достаточно зайти в панель управления хостингом и выполнить несколько простых действий:

Рассмотрим более детально выпуск и установку сертификата Let’s Encrypt

  1. В панели управления хостингом открываем раздел «SSL сертификаты»:
  2. В верхнем меню нажимаем на кнопку «Let’s Encrypt»:
  3. В открывшемся окне выбираем сайт, для которого необходимо выпустить сертификат «Let’s Encrypt»:
  4. Для подтверждения операции выпуска сертификата нажимаем»Ок»:
  5. После этого на протяжении 20-30 секунд в списке SSL сертификатов должен появиться новый сертификат Let’s Encrypt:
  6. Далее необходимо установить сертификат для нужного Вам сайта. Для этого в разделе «World Wide Web» — «WWW домены» открываем его свойства, включив и выбрав новый сертификат:
Читайте также:  Как узнать версию Net Framework. Способы и их описание

На нашем хостинге также доступен функционал автоматического продления SSL сертификтов Let’s Encrypt

Необходимо на страничке SSL-сертификаты панели управления хостингом найти сертификат, который отвечает следующим требованиям:

  • это сертификат Let’s Encrypt;
  • данный сертификат в настоящее время активен.

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

Именно эту галочку необходимо установить перед нажатием кнопки Ok (если поля для данной галочки нет, значит вы невнимательно читали приведенные выше критерии выбора сертификата).

Примерно раз в час скрипт, проверяет все активные сертификаты, помеченные этой галочкой, и автоматически продлевает те из них, срок действия которых истекает ранее, чем через 30 суток (или уже истек).

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

Особенности эксплуатации

При формировании сертификатов Let’s Encrypt у пользователей в корневых папках автоматически создаются специальные директории:

  • Папка «lets_encrypt» в корне хостинг-аккаунта. Служебная папка размером около 300Кб, которая обеспечивает техническую возможность выдавать сертификаты Let’s Encrypt пользователю. Удалять её не желательно, однако она автоматически восстановится при повторной выдаче или продлении сертификата.
  • Папка «.well-known/acme-challenge» в корне сайта, для которого был выпущен Let’s Encrypt сертификат. Данный каталог размером до 10Кб, необходим для проведения проверки собственности/принадлежности сайта. Не рекомендуется удалять, однако, как и предыдущий каталог, система автоматически восстановит эту папку при повторной выдаче или продлении сертификата.

Также имеются ограничения по выпуску ssl сертификатов — более подробно это описано в технической документации -limits/

Читайте также:  Как бесплатно обновить Windows 7 до Windows 10

Если возникают ошибки при выпуске ssl, в первую очередь можно самостоятельно удалить указанные выше папки: «lets_encrypt» в корне хостинг-аккаунта «.well-known/acme-challenge» в корне сайта

и повторить попытку.

Настройка одной командой 

Следующий шаг зависит от того, какой веб-сервер у вас установлен. 

Apache 

./certbot-auto —apache

Nginx

./certbot-auto —nginx

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

Запрос на ввод Email

Введите ваш или произвольный email адрес и нажмите Enter.

Запрос на согласие с правилами сервиса

Теперь вам предлагают ознакомиться с правилами использования сервиса. Введите A и нажмите Enter.

Запрос на присоединение к почтовой рассылке

Вам предлагают согласиться с получением почтовой рассылки на ваш адрес. Смело вводим N для отказа и нажимаем Enter.

Перечень ваших сайтов

Наконец, программа выведет все ваши домены, которые нашла у Apache или Nginx и предложит ввести номер того домена, который вы хотите подключить. В моём случае это будет №1. Введите число и нажмите Enter.

Результат работы программы

Вам также предложат выбрать, желаете ли вы оставить сайт доступным и по HTTP и по HTTPS или только HTTPS. Выбираем подходящий вариант и нажимаем Enter.

Готово. Теперь вы можете зайти на сайт по адресу https://<имя сайта>

Программа получила все необходимые сертификаты и положила их в директорию

/etc/letsencrypt/live/&lt;имя вашего домена&gt;/

Попутно она создала новый конфиг для вашего веб-сервера и настроила доступ к сайту по протоколу HTTPS. Конфигурационный файл можно найти по адресу

/etc/apache2/sites-available/&lt;имя домена&gt;

Более подробная информация изложена на сайте

Проверка настроек

На этом процедура установки SSL-сертификата на веб-сервер Apache завершена. Для проверки корректности настроек откройте ваш-веб сайт в браузере по протоколу https (например, ). Если сертификат установлен корректно, в адресной строке вашего браузера вы увидите иконку замка, при клике на которую будет отображена информация о приобретенном вами SSL-сертификате.

P. S. Другие инструкции:

  • Установка SSL-сертификата на Apache (Linux)
  • Генерация CSR-запроса на Linux/MacOS
  • Как установить LEMP-стек (Linux, nginx, MySQL, PHP) на Ubuntu LTS
  • Как установить LEMP-стек (Linux, nginx, MySQL, PHP) на CentOS 6

Сертификат

На этом шаге запустите Certbot используя плагин nginx для указания доменов, которые будут использовать сертификаты:

$ sudo certbot —nginx

Сертификат

При первом запуске данной утилиты необходимо ввести E-mail и согласиться с предоставляемыми условиями. На одном из дальнейших шагов необходимо будет выбрать для какого именно домена требуется активировать протокол HTTPS.

В случае успешной установки сертификата Certbot выведет на экран следующее сообщение:

Также, установку сертификата можно запустить командой:

$ sudo certbot certonly —nginx

Сертификат

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