Установка Let’s Encrypt на сервере

Ранее в статье о бесплатном ssl сертификате для сайта мы уже познакомили вас с основной концепцией сертификатов безопасности ssl, letsencrypt и способом их получения на примере панелей isp manager 5 и VESTA. В этой мы рассмотрим установку Let’s Encrypt на сервере на устаревшей, но по прежнему достаточно широко используемой панелью ISPmanager 4 и без наличия панели управления в прицнипе.

Внимание! Нижеследующий материал предполагает у вас наличия навыков работы с linux, его консольными текстовыми редакторами и понимания общей концепции взаимодействия с веб-сервером. В статье будут рассмотрены только ключевые шаги, без разъяснения тонкостей. Если вы не уверены в своих действиях — обратитесь за помощью к профильному специалисту.

Установка Let’s Encrypt на сервере

Первым делом, вне зависимости от дальнейшего варианта использования, нам нужно установить letsecrypt. Для этого подключаемся по ssh на целевой сервер используя имеющиеся у вас (root) доступы. Затем необходимо установить пакеты git и wget.
Для дистрибутивов на базе Debian/Ubuntu воспользуйтесь командой:

apt-get install git wget

Для дистрибутивов на базе CentOS:

yum install git wget

По окончании установки переходим в каталог /opt, это наиболее безопасное место для сборки нестандартных пакетов и его окружения:

cd /opt/

Далее запускаем команду:

git clone https://github.com/certbot/certbot.git

С её помощью мы копируем необходимые для получения скрипты в каталог /opt/certbot

Переходим в него:

cd /opt/certbot

Внимание! В случае использования старой версии ОС на основе Debian7/Ubuntu 14.04 работа с актуальной версией letsecnrypt невозможна! Выходом из ситуации будет установка более старой версии, которая на момент публикации статьи функциональна в полной мере. Для этого вместо git clone https://github.com/certbot/certbot.git вам нужно последовательно запустить:

mkdir -p /opt/certbot
cd /opt/certbot
wget https://raw.githubusercontent.com/certbot/certbot/75499277be6699fd5a9b884837546391950a3ec9/certbot-auto
chmod +x ./certbot-auto

Так мы создадим целевой каталог, загрузим в него старую версию letsecnrypt, установим права на его запуск.

Получение сертификата Let’s Encrypt на сервере

Предполагается, что у вас на сервере уже есть установленный веб-сервер nginx, который отвечает за обработку входящих подключений, включая ssl на стандартном 443 порту, а нужный домен уже направлен на сервер и отдается с него.
Останавливаем nginx:

service nginx stop

Это нужно для того, чтобы скрипт letsecnrypt смог подключится на порт, который по умолчанию резервирует веб-сервер.
Запускаем процесс получения сертификата при помощи команды:

./certbot-auto certonly --standalone -d имя_домена -d www.имя_домена

В случае если вам домен использует больше число алиасов — их нужно нужно перечислить в запускаемой команде в виде -d имя_алиаса. Если сам домен или его алиасы кириллические — их нужно добавлять в виде пуникода (pynycode). Для этого вы можете воспользоваться любым доступным конвертором, например: https://www.punycoder.com/

Установка Let’s Encrypt на сервер

Внимание! В случае использования старой версии ОС на основе Debian7/Ubuntu 14.04 запускаемая команда на получение сертификата будет иметь несколько иной вид:

./certbot-auto --no-self-upgrade certonly --standalone -d имя_домена -d www.имя_домена

Ключ —no-self-upgrade — необходимое условие, для того чтобы letsecnrypt не обновился до неподдерживаемой у вас версии.

При первом запуске letsecnrypt скачает и установит базовые пакеты для формирования необходимого ему окружения. Установка будет производится через стандартный пакетный менеджер вашей ОС, в процессе вам нужно будет только подтвердить её.

Затем последует ряд вопросов на которые вам нужно дать ответ:
1. Актуальная почта.
Установка Let’s Encrypt на сервер

2. Правила использования.
Установка Let’s Encrypt на сервер

3. Разрешение о предоставлении информации о вашей почте партнерам, некоммерческая, информационная рассылка.
Установка Let’s Encrypt на сервер

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

./certbot-auto certonly --manual --preferred-challenges dns -d имя_домена -d www.имя_домена

Внимание! В случае использования старой версии ОС на основе Debian7/Ubuntu 14.04 запускаемая команда на получение сертификата будет иметь несколько иной вид:

./certbot-auto certonly --no-self-upgrade --manual --preferred-challenges dns -d имя_домена -d www.имя_домена

Ключ —no-self-upgrade — необходимое условие, для того чтобы letsecnrypt не обновился до неподдерживаемой у вас версии.

Последует ряд вопросов на которые вам нужно дать ответ:
1. Разрешение занесения ip сервера с которого будет получен сертификат в лог.
Установка Let’s Encrypt на сервер

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

На примере cloudflare внесенные записи выглядят следующим образом:
Установка Let’s Encrypt на сервер

При правильном выполнении всех шагов последует получение сертификата:
Установка Let’s Encrypt на сервер

В выводе вы получите путь к актуальным данным сертификата. Обычно они имеют вид:

/etc/letsencrypt/live/имя_домена/fullchain.pem
/etc/letsencrypt/live/имя_домена/privkey.pem

Подключение сертификата Let’s Encrypt

В случае если у вас сервер без панели, вам нужно отредактировать конфигурационный файл nginx в котором у вас содержится описание виртуалхоста целевого домена. В зависимости от сервера и его настроек путь может отличаться, но в основном это /etc/nginx/nginx.conf и /etc/nginx/conf.d/имя_домена.conf. Ищите блок server_name в котором значится имя вашего домена для которого был получен сертификат, после блока listen ip_вашего_сервера добавьте строки:

listen ip_вашего_сервера:443 ssl;
ssl_certificate /etc/letsencrypt/live/имя_домена/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/имя_домена/privkey.pem;

Сохраняем изменения, проверяем корректность конфигурации nginx:

nginx -t

Запускаем ранее остановленный nginx:

service nginx start

При использовании isp manager 4 методика будет отличаться т.к. необходимо присутствие подключенного сертификата в самой панели, чтобы избежать возможных конфликтов со стороны используемой ПУ. Для этого авторизируемся в панель с имеющимися (root) доступами:

Установка Let’s Encrypt на сервер

В разделе “Учетные записи” переходим в “Пользователи”, затем выбираем нужного нам (от лица которого добавлен целевой домен), нажимаем “Изменить”, переходим в “Права” и устанавливаем галочку “SSL”, подтверждаем внесение изменений нажатием кнопки “Оk”.

Установка Let’s Encrypt на сервер

Далее в разделе “Домены” находим “WWW домены” и переходим в него, находим в списке домен для которого мы создавали сертификат, нажимаем “Изменить”, устанавливаем галочку на “SSL”, “SSL порт” оставляем по умолчанию (443) в поле “SSL сертификат” выбираем “создать новый самоподписанный”, подтверждаем подтверждаем внесение изменений нажатием кнопки “Оk”.

Установка Let’s Encrypt на сервер

Теперь самое важное — в консоли переходим в директорию в которой панель isp manager 4 хранит данные сертификатов:

cd /var/www/httpd-cert/имя_пользователя

Убеждаемся, что она содержит нужные нам данные:

ls

В выводе вы получите список файлов, нас интересуют два:

имя_домена.crt  
и
имя_домена.key

Удаляем их:

rm имя_домена.crt  имя_домена.key
На их месте создаем симлинки, ведущие в ту директорию, где находятся полученные сертификаты letsecnrypt:
ln -s /etc/letsencrypt/live/имя_домена/fullchain.pem имя_домена.crt
ln -s /etc/letsencrypt/live/имя_домена/privkey.pem имя_домена.key

Проверяем корректность конфигурации nginx:

nginx -t

Перезапускаем nginx:

service nginx start

На этом подключение сертификатов завершено. Корректность подключения сертификата можете проверить при помощи любого доступного сервиса проверки, например: https://www.sslshopper.com/ssl-checker.html

Установка Let’s Encrypt на сервер

Срок действия сертификата 90 дней, для автоматического его обновления нужно добавить соответствующее задание в cron. Перед этим проверим задана ли переменная PATH. Это необходимо для того, чтобы запускаемый скрипт мог корректно распознать наличие веб-сервера nginx для последующего перезапуска (особенно актуально для CentOS). Запускаем:

crontab -l | grep PATH

Если вывод пустой и “PATH” отсутствует — добавляем его (в CentOS даже если есть — убедитесь, что в нем присутствует /usr/sbin ). Для этого сначала получим нужное значение для текущего пользователя при помощи:

echo $PATH

Открываем cron на редактирование:

EDITOR=nano crontab -e

или

crontab -e

Добавляем сверху:

PATH=”полученное_значение_из_ранее_введенной_команды_в_кавычках”

После чего ниже уже задание на обновление сертификата:

01 01 */7 * * /opt/certbot/certbot-auto renew --nginx

Что эквивалентно запуску обновления в 01 минут 01 часа раз в 7 дней каждый месяц.

Внимание! В случае использования старой версии ОС на основе Debian7/Ubuntu 14.04 задание будет несколько отличаться:

01 01 */7 * * /opt/certbot/certbot-auto --no-self-upgrade renew --nginx

Ключ —no-self-upgrade — необходимое условие, для того чтобы letsecnrypt не обновился до неподдерживаемой у вас версии.

  • Дмитрий

    Доброго времени суток, спасибо за интересную статью, но, к сожалению, я не нашел ответа на свой вопрос. Последний раз я подключал ssl сертификат на хостинге reg.ru, и там была возможность его добавления бесплатно. С тех пор проблем с ним не было, но меня интересует его отличие от платного сертификата. Имеет ли смысл на него тратить деньги, или это тоже самое?

    • Администрация Friendhosting

      Здравствуйте.
      Платный ssl сертификат имеет смысл использовать, если вы предоставляете услуги или продаёте товары, например у вас интернет-магазин.

  • Николай

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

  • Евгений Иванов

    У меня есть сайт на другом хостинге, на который нужно установить ssl сертификат, но я не очень хорошо разбираюсь в данном вопросе. Сайт на движке вордпресс с платным контентом. Данный сертификат мне необходим для подключения на сайт ряда плагинов. На данный момент я ищу наиболее подходящий хост для своего сайта, который был бы наиболее автоматизирован для чайников с базовыми знаниями о вэб конструировании. Скажите, будет ли работать на вашем хосте вордпресс и смогу ли я не сильно ломая голову установить на вордпресс сертификат?

    • Администрация Friendhosting

      Здравствуйте.
      Да, разумеется на наших серверах будет работать любой сертификат.

  • Ольгв

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

  • Руслан

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

Мы используем файлы cookie. Подробнее — в наших условиях использования.