Установка 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-сертификата не вызывают доверия, потому что есть вероятность перехвата информации, например при вводе пароля. А если касается платежных данных, то и подавно.

This site is using cookie files, Google Analytics system to collect statistics about website visitors and also collects data like your IP and geolocation. More in our policy.
By continuing to use current website you are automatically agreed with using described technologies.