Установка SSL-сертификата от Let’s Encrypt на shared хостинг

Что делать если у Вас виртуальный хостинг и не хочется покупать SSL-сертификат за несколько тысяч рублей?

Конечно, поставить бесплатный  от Let’s Encrypt!

Для клиентов cishost.ru в 2016-ом году достаточно было написать в техподдержку и попросить установить сертификат от Let’s Encrypt — специалисты техподдержки устанавливали. Возможно сейчас так же.

На domen-hosting.net требовалось купить выделенный IP за 100р. в месяц, хотя позже, другому клиенту, техподдержка поставила бесплатно.

А вот покупателям хостинга nic.ru и masterhost.ru техподдержка не смогла помочь — ответили поставить можно, ставьте сами.

На VPS/VDS хостингах я устанавливал  SSL-сертификат с помощью Certbot, и как это сделать описал в конце статьи Проблемы с Let’s Encrypt в ISPManager.

На nic.ru и masterhost.ru установить Certbot, к сожалению, было нельзя, поэтому нашел другое решение —  скрипт CertLE https://github.com/skoerfgen/CertLE.

Первое получение сертификата

Или через wget, или сначала себе, потом по ftp закачиваем CertLE на сервер в домашний каталог юзера. Не в папку сайта! Там он не нужен.

Даем права на исполнение файлу certle:

Далее все просто:

Этими командами генерируем ключ аккаунта и ключ домена.
Регистрируем c ключом аккаунта свою почту в ACME-сервисе.
На эту почту будут приходить уведомления об окончании срока регистрации домена.
Четвертой командой получаем сам сертификат.

Последнее действие, к сожалению, не автоматизировать — надо ручками добавить, созданные скриптом, файлы сертификатов в панели управления хостингом.
Для masterhost.ru добавлял сертификат (cert.pem) и ключ (domain_key.pem), на nic.ru еще можно указать промежуточный сертификат (chain.pem).

Обновление сертификата

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

 

Ошибки

В процессе первой установки не обошлось без ошибок.

Для оригинального CertLE была ошибка:

Она решается настройкой PHP, или можно добавить функцию readline в CertLE.php согласно https://stackoverflow.com/questions/23238378/call-to-undefined-function-readline. Версия CertLE с уже добавленной функций.

После добавления readline три команды certle успешно выполнились, но получение сертификата все равно не получалось. Возникала ошибка:

Оказалось, что на сайте включен редирект с www на без www или что то в этом роде, из-за чего файл, генерируемый CertLE, в браузере можно было посмотреть, но код ответа скрипту не нравился. Решилось временным отключением редиректа. При обновлении сертификата ошибки уже не было.

 

Читайте также: