Получение бесплатного SSL сертификата от Let’s Encrypt


Получение и продление бесплатного сертификата от Let’s Encrypt.

В связи с недавними блокировками сертификатов (которые раздавались бесплатно, сроком от 1 года до 3 лет) от StartCom и WoSign всеми современными браузерами, встала задача – получить и продлить в автоматическом режиме SSL сертификат от единственного оставшегося центра сертификации Let’s Encrypt, который раздает бесплатные сертификаты сроком на 90 дней.

Прежде чем начать

  • Убедитесь, что Ваш хостинг-провайдер поддерживает установку SSL сертификатов
  • Убедитесь, что Ваш хостинг-провайдер дает доступ на сервер по SSH

ВАЖНО! Для подтверждения владения доменом и успешной генерации сертификата, нужно генерировать сертификаты с сервера куда ссылается A-запись.

Шаг 1 – активируем SSH доступ

  1. SSH доступ необходим для генерации SSL сертификата. На примере хостинга от компании Hostinger, в панели управления перейдите в раздел SSH
  2. Включение SSH: нажмите на кнопку Disabled что бы поменять статус на Enabled. Затем нажмите на кнопку Update, что бы сохранить изменения.
  3. Страница обновится, и вы увидите информацию, необходимую для подключения через SSH (там же ссылка на SSH клиент Putty).
    Запишите ее, поскольку она понадобится вам в следующем шаге.

Шаг 2 – Установка клиента ACME и Composer

Для создания SSL-сертификата Let’s Encrypt, мы будем использовать ACME-клиент (Automated Certificate Management Environment) и написанный на PHP композер.

Прежде всего, вам нужно будет подключиться к вашей учетной записи хостинга через SSH и загрузить все необходимые компоненты. Если вы используете macOS или Linux, вы можете использовать терминал для подключения через SSH, пользователи Windows могут воспользоваться клиентом PuttySSH.

  1. Подключитесь к учетной записи хостинга с помощью SSH.
    В нашем примере это было бы так:
    ssh x123011738@31.170.164.22 -p 65002
  2. Клонируйте к себе клиент ACME из репозитория github. Клонирование можно выполнить следующей командой:
    git clone https://github.com/kelunik/acme-client
  3. Переходим в директорию с ACME клиентом:
    cd acme-client
  4. Скачиваем и устанавливаем композер:
    php -r "copy('https://getcomposer.org/installer','composer-setup.php');"; 
    php composer-setup.php;
    php -r "unlink('composer-setup.php');";
    php composer.phar install --no-dev

Шаг 3 – Генерация SSL сертификата

После того, как вы загрузили и установили ACME-клиент и композер, вы можете создать бесплатный SSL от Let’s Encrypt.

Во-первых, зарегистрируйте учетную запись, выполнив следующую команду:

php bin/acme setup --server letsencrypt --email your@email.com

Обратите внимание, что вам нужно изменить адрес электронной почты your@email.com на свой.

Процесс создания сертификата SSL довольно прост. Выполните следующую команду:

php bin/acme issue --domains yourdomain.com --path /home/x123011738/public_html --server letsencrypt

Измените yourdomain.com на ваше реальное доменное имя, и x123011738 на ваше реальное имя пользователя.

Для нескольких доменов, необходимо перечислять их через двоеточие:

 php bin/acme issue --domains yourdomain.com:www.yourdomain.com --path /home/x123011738/public_html --server letsencrypt

Если сертификат был успешно выдан, вы увидите следующее сообщение:

 Requesting certificate ...
Successfully issued certificate.
See /home/x123011738/acme-client/data/certs/acme-v01.api.letsencrypt.org.directory/yourdomain.com

Клиент ACME сгенерировал сертификаты и файлы закрытого ключа. К сожалению, установка не может быть выполнена через SSH из-за ограничений безопасности. Поэтому сначала вам нужно вручную скопировать файлы сертификатов и секретных ключей на свой компьютер.

Это можно сделать с помощью моей инструкции и скачать файл через SSH, либо с помощью FTP клиента: просто скачайте их, либо методом copy/paste.

Перейдите в каталог, в котором хранятся закрытый ключ и файлы сертификатов:

 cd /home/x123011738/acme-client/data/certs/acme-v01.api.letsencrypt.org.directory/yourdomain.com

Используйте команду cat, чтобы просмотреть содержимое файла fullchain.pem:

 cat fullchain.pem

Скопируйте часть, выделенную красным цветом, и сохраните ее в текстовом файле на вашем компьютере. Назовите текстовый файл certificate.txt

Сделайте тоже самое с закрытым ключом:

 cat key.pem

Скопируйте закрытый ключ (как показано на скриншоте) и сохраните его в текстовом файле. Назовите его privatekey.txt

Самая сложная часть закончилась. Теперь вы можете установить SSL-сертификат.

Шаг 4 – Установка сертификата через панель управления

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

  1. Перейдите в раздел SSL.
  2. Выберите домен из раскрывающегося списка, для которого вы хотите установить сертификат SSL.
  3. Вставьте содержимое файла certificate.txt в сертификат: (CRT) и содержимое файла privatekey.txt в поле закрытый ключ: (KEY). После завершения нажмите кнопку «Установить».
  4. После завершении установки вы увидите сообщение, что все успешно установилось.

Вот и все, вы успешно установили бесплатный SSL от Let’s Encrypt на виртуальный хостинг. Теперь ваше доменное имя будет работать по протоколу HTTPS.

Шаг 5 – Проверка даты истечения срока действия и автопродление SSL-сертификата

Теперь переходим к самому интересному.

Срок действия SSL-сертификатов 90 дней. Как быть? Или надо помнить об этом, и каждый раз забывать продлить сертификат?

Нет. Все проще. Идем дальше.

Вы можете проверить срок его действия через SSH, используя следующую команду:

 php acme-client/bin/acme check --name yourdomain.com --server letsencrypt

Вы можете автоматически продлить SSL сертификат с помощью cron. Например, чтобы автоматически обновить сертификат SSL, вы можете задать задание cron для запуска следующей команды через месяц:

 php acme-client/bin/acme issue --domains yourdomain.com --path /home/x123011738/public_html --server letsencrypt

На Hostinger задание cron может быть создано в разделе Расширенные Cron Задачи. Вы можете использовать следующие настройки:

  • Минуты – :00 top of the hour (0)
  • Час(ы) – 12 a.m. Midnight (0)
  • Дни – Every day (*)
  • Месяц – Every other month (*/2)
  • Будни – Every weekday (*)

Подведение итога

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

Это руководство предназначено для того, чтобы показать вам обходное решение (после бана StartCom и WoSign), которое вы можете использовать для установки бесплатного SSL от Let’s Encrypt на вашем хостинге.

Надеюсь, данная статья вам пригодится.

Удачи!

P.S. В связи с тем что сертификаты и ключ на хостинге от Hostinger необходимо копировать-вставлять вручную, в автоматическом режиме режиме автообновление не возможно. Хотя сами сертификаты корректно обновляются через клиент ACME.


Оцените статью или поделитесь ей в соцсетях:

+ 0 | - 0

Рекомендуемые статьи:


Комментарии

  1. Роман 15 июля 2017
    Добрый день!
    Делаю по инструкции, но после ввода команды
    php bin/acme setup —server letsencrypt —email your@email.com(с моей почтой)
    выдается следующее сообщение
    Parse error: syntax error, unexpected „[“ in /home/u54352/tdpresto.ru/www/acme-client/bin/acme on line 42
    там и правда cтоит [ но чем мешает не понятно
  2. Старый Айтишник 15 июля 2017
    Роман, какая версия PHP? И кто хостер?
  3. Дмитрий 17 сентября 2017
    пхп 5.6 хотингер.ру Не работает абтообновление сертификата. Приходится ручками в разделе ссл каждый раз вбивать.
  4. Старый Айтишник 17 сентября 2017
    Дмитрий, подтверждаю. Но времени разбираться с этим пока не было. Чуть позже займусь этой проблемой.
  5. Марат 5 декабря 2017
    Самое полезное руководство из имеющихся в рунете Во второй раз отыскал и воспользовался - все как по маслу. Автообновления нет, но это не так страшно. Сама установка везде расписана слишком замысловато будто для профи, которые в этом и так не нуждаются, а здесь все с толком с расстановкой как для чайников, каковых большинство. Еще полезно было бы снабдить это дело предварительной статьей о настройке подключения к ssh для putty - для тех у кого нет в этом опыта толковый мануал найти не так уж и просто. Сам воспользовался статьей своего хостера. В любом случае большое спасибо автору.
  6. Старый Айтишник 5 декабря 2017
    Марат, спасибо за комментарий. Рад что статья пригодилась ;) По поводу подключения по ssh, что конкретно не получается?
  7. Роман 6 апреля 2018
    А как получить на два домена сразу сертификат с www и без?
  8. Старый Айтишник 6 апреля 2018
    А как получить на два домена сразу сертификат с www и без?
    Роман, попробуйте указать все домены, например -d domain.com -d www.domain.com
  9. Роман 9 апреля 2018
    Разобрался, там надо вводить -domains site.ru:www.site.ru и т.д. через двоеточие, до 100 доменов. Вы это в статью добавьте, нужная информация ;)
  10. Старый Айтишник 25 апреля 2018
    Разобрался, там надо вводить -domains site.ru:www.site.ru и т.д. через двоеточие, до 100 доменов. Вы это в статью добавьте, нужная информация ;)
    Роман, спасибо, добавил в статью.
  11. Артем Головко 6 мая 2018
    На этом шаге "зарегистрируйте учетную запись, выполнив следующую команду:" выдает ошибку "PHP Parse error: syntax error, unexpected '$command' (T_VARIABLE) in home/xxx/xxx/ on line 160" Не подскажете, в какую сторону копать?
  12. Старый Айтишник 6 мая 2018
    На этом шаге "зарегистрируйте учетную запись, выполнив следующую команду:" выдает ошибку "PHP Parse error: syntax error, unexpected '$command' (T_VARIABLE) in home/xxx/xxx/ on line 160" Не подскажете, в какую сторону копать?
    Какая версия PHP? Требуется PHP 5.3.2+
  13. Павел 3 июля 2018
    Подскажите, пожалуйста. После команды php bin/acme setup --server letsencrypt --email admin@mail.com; ничего не происходит. Все предыдущие пункты выполнились успешно. Сюда вписывал адрес почты на домене сайта. Что предпринять?
  14. Старый Айтишник 25 июля 2018
    Подскажите, пожалуйста. После команды php bin/acme setup --server letsencrypt --email admin@mail.com; ничего не происходит. Все предыдущие пункты выполнились успешно. Сюда вписывал адрес почты на домене сайта. Что предпринять?
    Попробуйте повторить все шаги сначала, возможно, что-то некорректно установилось, и вы не можете зарегистрироваться. И еще, включите отображение ошибок в PHP.

Оставьте комментарий!

Поля обозначенные как * требуются обязательно. Перед постингом всегда делайте просмотр своего комментария.