Блог лаборанта

Установка SSL сертификата Lets Encrypt на хостинг Руцентра

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

Ниже изложенное, по тексту, не рекомендуется рассматривать как пошаговую инструкцию или  руководство к действию.

В статье, намеренно не будут разбираться такие моменты, как установка letsencrypt (cerbot), различные ошибки в реализации. Разумеется, не будет дан ответ на вопрос "на шо, оно мне?".

 

Условия проведения эксперимента:
1. Linux (в нашем случае Debian) + установленный letsencrypt + root (sudo) права. Далее по тексту - ЛХост.
2. домен + сайт + хостинг Руцентр (тариф 201 или 301, с выделенным IP*). Далее по тексту - Хостинг.

* На момент написания этого текста, как обязательное условие для установки пользовательского SSL сертификата, Руцентр требует перейти на тарифный план с выделенным IP-адресом. (доступно на тарифах 201 и 301)

Создать в корне сайта (на хостинге) необходимые каталоги:
/.well-known
/.well-known/acme-challenge

Затем генерируем ключи в ручном режиме, с сохранением на ЛХост, без автоматической установки на сервер.
Для этого, на ЛХост перейти в каталог letsencrypt, под рутом или через sudo запустить скрипт letsencrypt-auto с параметрами указанными ниже:

#./letsencrypt-auto --agree-dev-preview --server \https://acme-v01.api.letsencrypt.org/directory -a manual auth

В процессе исполнения скрипта:

  1. Ввести доменое имя сайта
  2. Согласиться с логированием IP.

    IP адрес хоста, с которого послан запрос, будет сохранен в логах сервера Let’s Encrypt
  3. Затем надо пройти проверку домена, по запросу Let’s Encrypt:
    Make sure your web server displays the following content at
    http://domain.ru/.well-known/acme-challenge/XXXXXXXXXXXXXXXXXXXXXXXX before continuing:
    
    YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
    
    If you don't have HTTP server configured, you can run the following
    command on the target server (as root):
    
    mkdir -p /tmp/certbot/public_html/.well-known/acme-challenge
    cd /tmp/certbot/public_html
    printf "%s" YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY > .well-known/acme-challenge/XXXXXXXXXXXXXXXXXXXXXXXX
    # run only once per server:
    $(command -v python2 || command -v python2.7 || command -v python2.6) -c \
    "import BaseHTTPServer, SimpleHTTPServer; \
    s = BaseHTTPServer.HTTPServer(('', 80), SimpleHTTPServer.SimpleHTTPRequestHandler); \
    s.serve_forever()" 
    -------------------------------------------------------------------------------
    Press Enter to Continue
    
    • Вам будет предложен URL для проверки, сразу обращаем внимание на имя конечного файла в ссылке
    • Создаем необходимый проверочный файл на Хостинге с таким же именем как в проверочном URL, в заранее созданном каталоге /.well-known/acme-challenge
    • Добавляем в содержимое файла проверочный код, который предложила система Let’s Encrypt (набор символов после before continuing:).
    • Далее вставляем проверочный URL в адресную строку браузера и проверяем доступность файла.
    • После того как убедитесь, что файл доступен по проверочной ссылке и открывается в браузере, соглашаемся запустить проверку домена.

По окончании процедуры проверки домена, будут сгенерированы файлы сертификатов с указанием пути сохранения.
Далее переходим в каталог /etc/letsencrypt/live/[имя домена]. Проверяем наличие ссылок на файлы:

  • privkey.pem - содержит приватный ключ сертификата
  • cert.pem - содержит сертификат сервера
  • chain.pem - содержит промежуточный сертификат
  • fullchain.pem - chain.pem и cert.pem в одном файле

В панели управления Хостингом перейти в раздел Веб-серверSSL-сертификаты.

Удалите установленный сертификат (если есть установленный по умолчанию).
После удаления, будет доступна опция добавления сертификата.
В выподающем списке опций выбрать варант: С промежуточным сертификатом

В поле приватный ключ вставить содержимое файла privkey.pem
В поле SSL-сертификат вставить содержимое файла cert.pem
В поле промежуточный сертификат вставить содержимое файла chain.pem

При копировании необходимо убедиться в наличии пяти тире по обе стороны от BEGIN и END. В ключе не должно быть лишних пробелов, разрывов строк или дополнительных символов, которые непреднамеренно были добавлены.

Сохраните изменения для установки сертификата.

Включите SSL-шифрование для вашего сайта в панели хостинга и настройте (если требуется) параметры SSL в админке сайта.

Минусы:

Срок действия SSL сертификата от Let’s Encrypt - 90 дней. Автоматизировать процесс обновления SSL сертификата на хостинге, возможности нет, т.к отсутствуют необходимые права. Придется вручную обновлять ключи не ранее чем через 60 дней и не позднее чем через 90 дней.

Плюсы:

Минимальные затраты на получение и установку доверенного SSL сертификата.

Навигация