Данное руководство поможет настроить TLS/SSL сертификат Let’s Encrypt для Apache на сервере Ubuntu 16.04 и автоматизировать его обновление.
SSL-сертификаты необходимы веб-серверам для шифрования трафика между сервером и клиентом, что повышает безопасность данных пользователей и приложения. Сервис Let’s Encrypt позволяет быстро и просто получить такой сертификат.
1: Установка зависимостей
Обновите индекс пакетов:
sudo apt-get update
Установите git, чтобы загрузить пакет Let’s Encrypt:
sudo apt-get install 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
Чтобы получить один сертификат для нескольких доменов или поддоменов, передайте их в качестве дополнительных параметров. Первый домен, указанный в команде, будет считаться базовым (потому поддомены рекомендуется указывать в конце):
./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
Вы получите доступ к сайту по 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.
5: Обновление клиента Let’s Encrypt (опционально)
Чтобы обновить локальную копию клиента, запустите команду git pull в каталоге Let’s Encrypt.
cd /opt/letsencrypt sudo git pull
Заключение
Теперь веб-сервер защищён при помощи бесплатного SSL-сертификата Let’s Encrypt. Напоминаем, что на данный момент клиент всё ещё находится в бета-версии, потому рекомендуется регулярно проверять официальный блог Let’s Encrypt на наличие обновлений.