Поиск по сайту:

Как защитить Apache с помощью Let's Encrypt в Ubuntu 16.04


Введение

В этом руководстве показано, как настроить сертификат TLS/SSL от Let’s Encrypt на сервере Ubuntu 16.04, на котором в качестве веб-сервера используется Apache.

Сертификаты SSL используются на веб-серверах для шифрования трафика между сервером и клиентом, обеспечивая дополнительную безопасность для пользователей, обращающихся к вашему приложению. Let’s Encrypt предоставляет простой способ бесплатно получить и установить доверенные сертификаты.

Предпосылки

Чтобы выполнить это руководство, вам потребуется:

  • Сервер Ubuntu 16.04 с пользователем без полномочий root с поддержкой sudo, который можно настроить, следуя нашему руководству по начальной настройке сервера.
  • Веб-сервер Apache, установленный с одним или несколькими доменными именами, правильно настроенными с помощью виртуальных хостов, в которых указано ServerName.

Когда вы будете готовы двигаться дальше, войдите на свой сервер, используя свою учетную запись с поддержкой sudo.

Шаг 1 — Установите клиент Let’s Encrypt

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

Сначала добавьте репозиторий:

  1. sudo add-apt-repository ppa:certbot/certbot

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

  1. sudo apt-get update

И, наконец, установите Certbot из нового репозитория с помощью apt-get:

  1. sudo apt-get install python-certbot-apache

Клиент certbot Let’s Encrypt теперь готов к использованию.

Шаг 2 — Настройте SSL-сертификат

Создать сертификат SSL для Apache с помощью Certbot довольно просто. Клиент автоматически получит и установит новый SSL-сертификат, действительный для доменов, указанных в качестве параметров.

Чтобы выполнить интерактивную установку и получить сертификат, который распространяется только на один домен, запустите команду certbot следующим образом, где example.com — ваш домен:

  1. sudo certbot --apache -d example.com

Если вы хотите установить один сертификат, действительный для нескольких доменов или субдоменов, вы можете передать их команде в качестве дополнительных параметров. Первое доменное имя в списке параметров будет базовым доменом, используемым Let's Encrypt для создания сертификата, и по этой причине мы рекомендуем вам указать пустое доменное имя верхнего уровня первым в списке, за которым следуют любые дополнительные поддомены. или псевдонимы:

  1. sudo certbot --apache -d example.com -d www.example.com

В этом примере базовым доменом будет example.com.

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

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

Когда установка будет завершена, вы сможете найти сгенерированные файлы сертификатов в /etc/letsencrypt/live. Вы можете проверить статус своего SSL-сертификата по следующей ссылке (не забудьте заменить example.com своим базовым доменом):

https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest

Теперь вы сможете получить доступ к своему веб-сайту, используя префикс https.

Шаг 3 — Проверка автоматического продления Certbot

Сертификаты Let’s Encrypt действительны только в течение 90 дней. Однако установленный нами пакет certbot позаботится об этом за нас, запуская certbot renew два раза в день с помощью системного таймера. В дистрибутивах, отличных от systemd, эта функциональность обеспечивается сценарием cron, размещенным в /etc/cron.d. Задача запускается два раза в день и обновляет любой сертификат, срок действия которого истекает в течение тридцати дней.

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

  1. sudo certbot renew --dry-run

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

Заключение

В этом руководстве мы увидели, как установить бесплатный SSL-сертификат от Let’s Encrypt, чтобы защитить веб-сайт, размещенный с помощью Apache. Мы рекомендуем вам ознакомиться с официальной документацией Certbot для получения более подробной информации о клиенте Certbot.