Бесплатная защита Apache с Let's Encrypt на Ubuntu 14.04

2 комментария

Введение

В статье мы расскажем, как настроить TLS/SSL-сертификат от Let's Encrypt на сервере Ubuntu 14.04 с установленным Apache в качестве веб-сервера (пишите в комментариях, если необходимо расширить статью описанием процесса установки на nginx). Сертификаты Let's Encrypt выдаются на 90 дней, поэтому в статье затронем вопрос автоматизации продления сертификата.

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

Необходимое

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

  • VDS с Ubuntu 14.04 с root-пользователем (доступ к нему вы получаете в процессе инициализации сервера) или пользователя с возможностью использования sudo (его вы можете настроить самостоятельно), инструкции по настройке VDS-сервера вы найдете в этом разделе: http://timeweb.com/ru/help/pages/viewpage.action?pageId=4358255;
  • установленный и правильно настроенный для одного или нескольких хостнеймов веб-сервер Apache.

Порядок действий

Шаг 1 - Установка зависимостей

Первое, что мы сделаем, это обновим кэш менеджера пакетов, чтобы иметь доступ к последним версиям  ПО:

sudo apt-get update

Для того, чтобы получить ПО Let's Encrypt, нам понадобится Git (популярная система контроля версий). Для его установки выполните следующую команду:

sudo apt-get install git 

Шаг 2 - Установка клиента Let's Encrypt

На данном шаге мы скачаем клиент Let's Encrypt из официального репозитория проекта и поместим его файлы в специальной директории на сервере. Мы делаем это через Git, чтобы облегчить обновление, когда они станут доступны (поскольку клиент Let's Encrypt все еще находится в бета-версии, возможны обновления для исправления ошибок и добавления новых функциональных возможностей).

Для наших целей мы создадим папку в каталоге /opt. Это стандартный каталог для размещения программного обеспечения сторонних производителей:

mkdir /opt

Чтобы создать локальную копию клиента Let's Encrypt, выполним:

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

Шаг 3 - Установка SSL-сертификата

Получить сертификат SSL для Apache с помощью Let's Encrypt очень просто. Клиент автоматически сгенерирует и установит новый сертификат SSL, который действителен для доменов, переданных в качестве параметров.

Перейдем в каталог letsencrypt:

cd /opt/letsencrypt

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

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

Если вы хотите установить один сертификат, действительный для нескольких доменов или субдоменов (это может понадобиться в случае, если вы разместили на VDS несколько сайтов, при этом используете один и тот же IP-адрес, добавить который вы можете, следуя этой инструкции: http://timeweb.com/ru/help/pages/viewpage.action?pageId=4358224; или если ваш сайт доступен и с префиксом www и без него), вы можете передать их в качестве дополнительных параметров команды. Первое передаваемое доменное имя будет использоваться Let's Encrypt в качестве базового, по этой причине мы рекомендуем передать первым доменное имя верхнего уровня, а затем список любых дополнительных поддоменов или псевдонимов:

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

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

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

Когда установка будет завершена, новые файлы сертификатов будут доступны в директории /etc/letsencrypt/live. Статус вашего сертификата SSL вы сможете проверить по следующей ссылке (не забудьте заменить example.com на ваш базовый домен для сертификата): https://www.ssllabs.com/ssltest/analyze.html?d=example.com&latest
Теперь у вас должна быть возможность зайти на ваш сайт с использованием HTTPS (https://example.com).

Шаг 4 - Настройка  автопродления

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

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

letsencrypt renew

Чтобы автоматизировать процесс продления, мы добавим задание в cron (прочитать, как это сделать, можно в этом разделе: http://timeweb.com/ru/support/faq/hosting/technical/kak-mozhno-zapuskat-zadachi-vypolnyat-skripty-po-raspisaniyu-na-khostinge-timeweb/). Для редактирования crontab для root пользователя выполните следующую команду:

sudo crontab -e

Вставьте следующую строку:

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

Сохраните файл и выйдите из редактора. 

Это создаст новое задание, которое будет пытаться обновить сертификаты, у которых осталось менее 30 дней до истечения каждый понедельник в 2:30 утра. Вся информация, генерируемая командой, будет сохраняться в лог-файле, доступном по пути /var/log/letsencrypt-renew.log.

Шаг 5 - Обновление клиента Let's Encrypt (необязательно)

Всякий раз, когда новые обновления Let's Encrypt будут доступны, вы можете обновить локальную копию, запустив git pull в каталоге Let's Encrypt:

св /opt/letsencrypt
sudo git pull

Это позволит загрузить все последние изменения клиента на ваш сервер.

Результат

В этом руководстве мы познакомились с тем, как установить бесплатный сертификат SSL от Let's Encrypt на сайт, работающий под управлением веб-сервера Apache. Поскольку клиент Let's Encrypt все еще находится в бета-версии, мы рекомендуем вам периодически знакомиться с содержимым блога Let's Encrypt (https://letsencrypt.org/blog/) на предмет важных обновлений.

Запуск VDS

Комментарии

Michel Waker 0
13 фев в 2017
Спасибо за инструкцию, все установилось и работает.
Из под терминала автопродление работает, но с автопродлением по крону есть проблемы, похоже команду /opt/letsencrypt/letsencrypt renew нужно писать в кроне как-то по другому:
Cron Daemon выдает ошибку: su: must be run from a terminal, и в логах пишет, что нельзя применять sudo.
Есть идеи, как сделать правильно?
Nik Fly 0
28 фев в 2017
Анатолий, спасибо большое за инструкцию. Подскажите пожалуйста, а как мне быть, если на я на Ubuntu 14.04 установил связку Apache+Nginx? Для какого сервера тогда нужно получать сертификат, для Apache или для Nginx? Или и для того, и для другого? Извините за глупые вопросы, просто для меня это пока что китайская грамота :(