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

Как настроить сертификаты Let’s Encrypt для нескольких виртуальных хостов Apache в Ubuntu 14.04


Введение

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

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

Мы также расскажем, как автоматизировать процесс обновления сертификата с помощью задания cron.

## Предпосылки

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

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

Важно, чтобы каждый виртуальный хост настраивался в отдельном конфигурационном файле и к нему можно было получить доступ извне через браузер. Чтобы получить подробное руководство о том, как правильно настроить виртуальные хосты Apache в Ubuntu, перейдите по этой ссылке.

Для целей этого руководства мы установим сертификаты Let’s Encrypt для доменов example.com и test.com. Они будут упоминаться в руководстве, но вы должны заменить их своими собственными доменами, следуя дальше.

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

##Шаг 1 — Загрузите клиент Let’s Encrypt

Первым шагом к использованию Let’s Encrypt для получения SSL-сертификата является установка программного обеспечения certbot на ваш сервер. Разработчики Certbot поддерживают собственный репозиторий программного обеспечения Ubuntu с последними версиями программного обеспечения. Поскольку Certbot находится в такой активной разработке, стоит использовать этот репозиторий для установки более новой версии 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-сертификат для Apache с помощью certbot клиента Let’s Encrypt довольно просто. Клиент автоматически получит и установит новый SSL-сертификат, действительный для доменов, указанных в качестве параметров.

Хотя можно объединить несколько сертификатов Let’s Encrypt вместе, даже если доменные имена разные, рекомендуется создавать отдельные сертификаты для уникальных доменных имен. Как правило, вместе следует объединять только поддомены определенного домена.

###Генерация первого SSL-сертификата

Мы начнем с настройки SSL-сертификата для первого виртуального хоста example.com.

Мы выполним интерактивную установку и получим связанный сертификат, действительный для домена и поддомена, а именно example.com в качестве базового домена и www.example.com в качестве поддомена. . Вы можете включить любые дополнительные поддомены, которые в настоящее время настроены в настройках Apache, либо в качестве виртуальных хостов, либо в качестве псевдонимов.

Запустите команду certbot с помощью:

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

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

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

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

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

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

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

Создание второго SSL-сертификата

Генерация сертификатов для ваших дополнительных виртуальных хостов должна следовать тому же процессу, который описан на предыдущем шаге.

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

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

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

Опять же, вы можете проверить статус своего SSL-сертификата по следующей ссылке (не забудьте заменить test.com на ваш базовый домен):

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

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

##Шаг 3 — Настройте автоматическое продление

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

Чтобы запускать проверку обновления ежедневно, мы будем использовать cron, стандартную системную службу для запуска периодических заданий. Мы сообщаем cron, что делать, открывая и редактируя файл с именем crontab.

  1. sudo crontab -e

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

. . .
15 3 * * * /usr/bin/certbot renew --quiet

Часть 15 3 * * * в этой строке означает «выполнять следующую команду в 3:15 утра каждый день». Вы можете выбрать любое время.

Команда renew для Certbot проверит все сертификаты, установленные в системе, и обновит те, срок действия которых истекает менее чем за тридцать дней. --quiet указывает Certbot не выводить информацию и не ждать ввода данных пользователем.

cron теперь будет запускать эту команду ежедневно. Поскольку мы установили наши сертификаты с помощью подключаемого модуля --apache, Apache также будет перезагружен, чтобы гарантировать использование новых сертификатов.

Для получения дополнительной информации о том, как создавать и планировать задания cron, вы можете ознакомиться с нашим руководством по использованию Cron для автоматизации задач в руководстве по VPS.

##Заключение

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