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

Справочник системного администратора

В данной статье мы рассмотрим настройку Cerbot для автоматического получения бесплатных сертификатов SSL для ваших доменов, от центра сертификации Let’s Encrypt.

В прошлых статьях мы рассматривали как развернуть полноценный веб-сервер на базе Apache на операционной системе Debian. Однако Apache в такой конфигурации изначально работает по незащищенному протоколу http и не обеспечивает шифрования, что чревато утечками передаваемой информации, плюс тот же Google занижает такие сайты в выдаче результатов поиска, предоставляя приоритет сайтам на https.

Для того, чтобы нам перевести Apache на работу по протоколу https нам необходим SSL-сертификат, да не просто самоподписанный, а самый что ни на есть настоящий, выданный действующим центром сертификации, чтобы браузеры не ругались на такой сертификат.

Первым делом установим сам Cerbot и компоненту для его взаимодействия с Apache.

Выполняем команду:

sudo apt-get install certbot python3-certbot-apache

Теперь нам надо подготовить виртуальный хост в Apache, как это сделать можно узнать из этой статьи.

Выполняем команду (заменив domain.org на имя вашего домена):

sudo certbot --apache -d domain.org -d www.domain.org

Указываем e-mail администратора сертификатов Let’s Encrypt, принимаем лицензионное соглашение и отвечаем на вопросы.

Скрипт выведет список доменов, которые он нашёл, указываем номер домена для которого требуется сертификат и жмем Enter.

Далее вам будет предложено выбрать, перенаправлять трафик HTTP на HTTPS или нет. На практике это означает, что те, кто посещает ваш веб-сайт через незашифрованные каналы (HTTP), будут автоматически перенаправляться на адрес HTTPS вашего веб-сайта. Выберите 2, чтобы активировать перенаправление, или 1, если хотите сохранить и 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): 2

После этого шага конфигурация Certbot будет завершена, и вам будут предоставлены последние замечания о новом сертификате.

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

Сертификаты Let’s Encrypt действительны только в течение 90 дней и по их истечению нужно будет получать новые сертификаты. Чтобы автоматизировать процесс обновления сертификатов, пакет certbot, который мы установили, обеспечивает обновление приложений посредством добавления скрипта обновления в /etc/cron.d — им управляет служба systemctl, которая называется certbot.timer. Этот скрипт запускается дважды в день и автоматически обновляет любой сертификат, до истечения срока которого осталось менее 30 дней.

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

sudo systemctl status certbot.timer

Протестировать процесс обновления можно этой командой:

sudo certbot renew --dry-run