Предметом исследования, стала возможность получения бесплатного SSL сертификата от Let's Encrypt, сайту размещенному на хостинге Руцентра. Поскольку опционально, получение и установка сертификата Let's Encrypt в панели хостинга не предусмотрены, детально расписанной процедуры нет, кроме общего плана инструкции, клиенту хостинга придется разбираться самостоятельно со своими инициативами. В принципе, случай типичный для большинства хостингов, и решение проблемы, скорее всего будет универсальным и применимым на большинстве хостинговых площадок с возможностью установки пользовательских сертификатов.
Ниже изложенное, по тексту, не рекомендуется рассматривать как пошаговую инструкцию или руководство к действию.
В статье, намеренно не будут разбираться такие моменты, как установка letsencrypt (cerbot), различные ошибки в реализации. Разумеется, не будет дан ответ на вопрос "на шо, оно мне?".
Условия проведения эксперимента:
1. Linux (в нашем случае Debian) + установленный letsencrypt + root (sudo) права. Далее по тексту - ЛХост.
2. домен + сайт + хостинг Руцентр (тариф 201 или 301, с выделенным IP*). Далее по тексту - Хостинг.
Создать в корне сайта (на хостинге) необходимые каталоги:
/.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
В процессе исполнения скрипта:
- Ввести доменое имя сайта
-
Согласиться с логированием IP.
IP адрес хоста, с которого послан запрос, будет сохранен в логах сервера Let’s Encrypt - Затем надо пройти проверку домена, по запросу 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
Сохраните изменения для установки сертификата.
Включите SSL-шифрование для вашего сайта в панели хостинга и настройте (если требуется) параметры SSL в админке сайта.
Минусы:
Срок действия SSL сертификата от Let’s Encrypt - 90 дней. Автоматизировать процесс обновления SSL сертификата на хостинге, возможности нет, т.к отсутствуют необходимые права. Придется вручную обновлять ключи не ранее чем через 60 дней и не позднее чем через 90 дней.
Плюсы:
Минимальные затраты на получение и установку доверенного SSL сертификата.