Создание сертификата Let’s Encrypt для Apache в Ubuntu 16.04

Данное руководство поможет настроить TLS/SSL сертификат Let’s Encrypt для Apache на сервере Ubuntu 16.04 и автоматизировать его обновление.

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

Требования

  • Предварительно настроенный сервер Ubuntu 16.04 (инструкции по настройке – в этой статье).
  • Не-root пользователь с доступом к sudo.
  • Установленный сервер Apache.
  • Доменное имя.

1: Установка зависимостей

Обновите индекс пакетов:

sudo apt-get update

Установите git, чтобы загрузить пакет Let’s Encrypt:

sudo apt-get install git

Примечание: Чтобы узнать, что такое git, прочтите эту статью.

2: Загрузку клиента Let’s Encrypt

Теперь нужно загрузить клиент Let’s Encrypt из официального репозитория и поместить полученные файлы в специально отведённое место на сервере (это упростит обновление сертификата).

Примечание: На момент написания статьи клиент Let’s Encrypt все еще находится в бета-версии; следите за обновлениями клиента, чтобы устранить ошибки и внедрить новые функции.

Клонируйте репозиторий Let’s Encrypt в каталог /opt. Это стандартный каталог для хранения сторонних программ в системах Unix.

sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Команда создаст локальную копию официального репозитория Let’s Encrypt в каталоге /opt/letsencrypt.

3: Создание SSL-сертификата

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

Откройте каталог letsencrypt

cd /opt/letsencrypt

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

./letsencrypt-auto --apache -d example.com

Примечание: Условный домен example.com нужно заменить своим доменным именем.

Чтобы получить один сертификат для нескольких доменов или поддоменов, передайте их в качестве дополнительных параметров. Первый домен, указанный в команде, будет считаться базовым (потому поддомены рекомендуется указывать в конце):

./letsencrypt-auto --apache -d example.com -d www.example.com

Клиент предоставит пошаговые инструкции по настройке сертификата. Программа предложит указать адрес электронной почты (на случай если ключ будет утерян).

Также можно включить доступ http и https или настроить переадресацию всех запросов на https.

Примечание: Переадресация трафика на https рекомендуется в большинстве случаев.

После завершения установки сертификат будет помещен в /etc/letsencrypt/live. Проверьте состояние SSL-сертификата:

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

Примечание: Замените example.com своим доменом.

Вы получите доступ к сайту по https.

4: Автоматическое обновление

Сертификаты Let’s Encrypt действительны в течение 90 дней, но обновление рекомендуется выполнять заранее (например, через 60 дней использования сертификата). Клиент Let’s Encrypt предоставляет команду renew, которая проверяет текущий сертификат и обновляет его, если до даты его истечения остаётся меньше 30 дней.

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

./letsencrypt-auto renew

Поскольку сертификат был получен только что, команда не станет обновлять его. Она просто сообщит, что данный сертификат пока что не нуждается в обновлении.

Checking for new version...
Requesting root privileges to run letsencrypt...
/home/brennen/.local/share/letsencrypt/bin/letsencrypt renew
-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/example.com.conf
-------------------------------------------------------------------------------
The following certs are not due for renewal yet:
/etc/letsencrypt/live/example.com/fullchain.pem (skipped)
No renewals were attempted.

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

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

Отредактируйте crontab и создайте новую запись для команды renew. Чтобы отредактировать crontab пользователя root, введите:

sudo crontab -e

Команда предложит выбрать редактор:

no crontab for root - using an empty one
Select an editor.  To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny
Choose 1-4 [2]:

Чтобы принять редактор по умолчанию (nano), нажмите Enter.

Добавьте в конец таблицы следующую запись:

30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log

Сохраните и закройте файл. Это создаст новый процесс cron, который будет выполнять команду letsencrypt-auto renew каждый понедельник в 2.3о ночи. Вывод этой команды будет помещён в /var/log/le-renewal.log.

Примечание: Больше информации о cron можно найти в руководстве «Автоматизация задач с помощью Cron».

5: Обновление клиента Let’s Encrypt (опционально)

Чтобы обновить локальную копию клиента, запустите команду git pull в каталоге Let’s Encrypt.

cd /opt/letsencrypt
sudo git pull

Заключение

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

Tags: , , , ,

1 комментарий

Добавить комментарий