Получаем https сертфикат для сайта бесплатно на примере masterhost и gethttpsforfree.com

Так получилось, что API программы Заказ на Маркете требует для своей работы доступ по https. Поэтому встал вопрос, как быстро и просто получить https сертификат для сайта интернет магазина, причем, желательно, с минимальными расходами или вообще бесплатно.

Интернет магазин, для которого потребовался доступ по https хостится на MasterHost, поэтому, первое, что я сделал, это обратился в службу поддержки, что бы узнать, как подключить https для сайта на мастерхосте. Ответ довольно стандартен: для каждого домена/поддомена нужно заказать услугу выделенный IP/SSL (около 280 рублей в месяц за обе услуги на декабрь 2016 года) и заказать SSL сертификат "RAPIDSSL WILDCARD" за 11354 рубля в год.

Мне подумалось, что это дороговато, тем более что зеленую строку он не дает и только подтверждает домен, поэтому я решил поискать другие варианты. Одним из таких вариантов как раз оказался gethttpsforfree.com, который помогает в ручном режиме бесплатно получить SSL сертификат для домена, www синонима и поддоменов. Ниже с картинками и пояснениями будет показано, как за 10 минут получить себе такой сертификат.



Как я искал бесплатную выдачу https сертификатов для сайта


Быстрое гугление дало несколько ссылок на habrahabr, в комментариях к которым часто упоминался сервис "Let’s Encrypt". Его фишка - автоматическая выдача сертификатов для сайтов с использованием ACME протокола. Так же они рекомендуют использовать софт "Certbot ACME client", который может вам не только установить сертификат, но и своевременно его обновлять. Очень удобно, если вы админ на своем хостинге, но для Мастерхоста не вариант. Хотя, вот список хостингов, которые поддерживают работу certbot по умолчанию.

Не certbot'ом единым жив интернет и добрые люди разработали простой сайт https://gethttpsforfree.com/, который помогает в интерактивном режиме получить бесплатный https сертификат для своего сайта за 5-10 минут.

Получаем бесплатный https SSL сертификат для сайта на getHTTPSforfree.com


Итак, для получения сертификата на gethttpsforfree.com нам понадобится:
  1. Прямые руки и базовое знание английского языка (кто не знает - см. картинки с примерами куда нажимать)
  2. SSH доступ к своему хостингу на мастерхосте и к контрольной панели
  3. 5-10 минут времени
Приступим.

Шаг 0: Заходим по SSH на хостинг мастерхост

Я обычно использую PuTTY. Вы можете взять любой свой клиент с поддержкой входа по SSH. Для входа можно запустить PuTTY например такой командой: 
putty.exe -v -ssh uXXXXXX@uXXXXXX.ssh.masterhost.ru -pw password
, где uXXXXXX и password мастерхост присылает в письме после регистрации. Если забыли или потеряли - восстановите через службу поддержки.

По умолчанию вы попадете в директорию "/home/uXXXXXX". Проверить это можно командой "pwd". Рекомендую создать временную директорию "/home/uXXXXXX/cert" командой "mkdir /home/uXXXXXX/cert" и переместится в нее командой "cd /home/uXXXXXX/cert". Так будет удобнее работать с сертификатами - они все окажутся в одном месте.

Шаг 1: Указываем данные аккаунта и подписываем их ключем account.key

  • Указываем свой email на домене, для которого будем генерировать/обновлять https сертификат
  • Если ключа нет, генерим его командой:
    openssl genrsa 4096 > account.key
  • Если ключ уже есть, копируем его в директорию "/home/uXXXXXX/cert" в файл "account.key". ВАЖНО! Ключ от аккаунта держим в тайне и никуда не передаем. Это ваш пароль, а логин - тот email из первого пункта.
  • Распечатываем публичный ключ командой:
    openssl rsa -in account.key -pubout
  • Копируем и вставляем публичный ключ в специальное поле ввода на сайте gethttpsforfree.com в первом пункте "Step 1: Account Info"
  • Нажимаем кнопку "Validate Account Info" и получаем справа от нее ответ "Looks good! Proceed to Step 2!" Все хорошо, можно переходить ко второму шагу.
Шаг 1: Указываем данные аккаунта и подписываем их ключем account.key

 Шаг 2: Генерируем CSR для отправки запроса в Let's Encrypt и подписываем его domain.key

  •  Если ключа нет, генерим его командой:
    openssl genrsa 4096 > domain.key
  • Генерируем CSR для доменов, которые мы хотим перевести на https. Я использовал домен, www синоним и поддомен. Если хотите, укажите больше поддоменов через запятую:
    openssl req -new -sha256 -key domain.key -subj "/" -reqexts SAN -config <(cat /etc/ssl/openssl.cnf   <(printf "[SAN]\nsubjectAltName=DNS:mysite.ru,DNS:www.mysite.ru,DNS:new.mysite.ru"))
  • Копируем и вставляем "Certificate Signing Request" в специальное поле ввода на сайте gethttpsforfree.com во втором пункте "Step 2: Certificate Signing Request"
  • Нажимаем на кнопку "Validate CSR" и получаем справа от нее ответ "Found domains! Proceed to Step 3! (список доменов, что вы задали в команде выше)"
Шаг 2: Генерируем CSR для отправки запроса в Let's Encrypt и подписываем его domain.key

 Шаг 3: Подписываем запросы к API Let's Encrypt с использованием ключа account.key

  •  Сайт gethttpsforfree.com в пункте "Step3: Sign API Requests" покажет несколько команд для выполнения (мне показал 5, вам может другое число, т.к. зависит от кол-ва доменов в заявке), каждую из которых надо скопировать и запустить в ssh консоли вашего сайта (там, где запускали предыдущие команды).
  • Результат выполнения каждой команды надо скопировать из консоли и вставить на сайт в поле ввода прямо под той командой, которую запускали. 
  • После того, как все команды запущены и результаты их работы указаны в нужных полях на сайте gethttpsforfree.com, нажимаем кнопку "Validate Signatures" и получаем справа от нее ответ "Step 3 complete! Please proceed to Step 4." Все хорошо, можно переходить к четвертому шагу.
Шаг 3: Подписываем запросы к API Let's Encrypt с использованием ключа account.key

 Шаг 4: Подтверждаем права на домены

  •  Для каждого из указанных вами доменов и поддоменов надо теперь подтвердить права на владение. Для мастерхоста это делается путем размещения по заранее заданному адресу файлов с указанным содержанием. 
  • Для начала создадим необходимые директории командой:
      mkdir -p /home/uXXXXXX/mysite.ru/www/.well-known/acme-challenge
  • Затем другой командой сохраним нужное содержимое в файл с нужным названием:
    echo "FILECONTENT" > /home/u313809/mysite.ru/www/.well-known/acme-challenge/FILENAME
    , где FILECONTENT и FILENAME возьмем из пункта "Step 4: Verify Ownership" для каждого домена и поддомена свои.
  • Проверим, что сделали все правильно, скопировав ссылку из поля "Under this url" и открыв ее в браузере. Браузер должен показать содержимое страницы равное полю "Serve this content". Если нет - то добейтесь того, что бы ссылка заработала и показывала правильный контент, иначе права не подтвердятся и придется начинать все аж с первого пункта. Особенно внимательными будьте с поддоменами.
  • Убедившись, что ссылка рабочая, нажимаем кнопку "I'm now serving this file on mysite.ru" и получаем справа от нее ответ "Domain verified!"
  • Повторяем процедуру для всех доменов и поддоменов, для которых получаем сертификат.
  • После того, как все домены подтверждены, сайт gethttpsforfree.com выполнит автоматический запрос к API Let's Encrypt  и получит для вышеуказанных доменов два сертификата: "Signed Certificate" и "Intermediate Certificate".
Шаг 4: Подтверждаем права на домены

Шаг 5: https сертификаты у нас, осталось их настроить на masterhost

  • Сохраняем полученные сертификаты "Signed Certificate" и "Intermediate Certificate" в файлы domain.crt и intermediate.pem соотвественно (можно через консоль, или сохранить в файлы и залить на хостинг в директорию "/home/uXXXXXX/cert"
  • Сохраняем себе в надежное место файл "/home/uXXXXXX/cert/account.key" и удаляем его из директории "/home/uXXXXXX/cert"
  • Удаляем файлы из директории "/home/uXXXXXX/mysite.ru/www/.well-known/acme-challenge" и саму директорию.
  • Убеждаемся, что в настройках личного кабинета мастерхоста подключили услуги IP/SSL для нужных доменов и поддоменов.
  • Отправляем запрос в мастерхост с просьбой подключить работу по https протоколу с использованием сертификатов, размещенных в директории "/home/uXXXXXX/cert" вашего хостинга.
  • Ждем, пока придет ответ из службы поддержки и наслаждаемся работой своего сайта по защищенному протоколу передачи данных https с полностью бесплатными сертификатами.
  • Не забываем поставить себе задачу на пересоздание сертификатов за неделю до истечения их срока жизни (можно посмотреть в браузере, нажав на значек замочка возле надписи https:// на своем сайте).
Шаг 5: https сертификаты у нас
Если остались вопросы - внимательно изучаем все вышеприведенные ссылки и подсказки на сайте gethttpsforfree.com Все предельно просто и у меня получилось сделать быстрее, чем написать эту статью.




Комментарии

  1. Отлично, очень помогли, только теперь на 5 шаге одно окно и в нем 2 сертификата, на masterhost не обязательно покупать ip/ssl, можно включить поддержку ssl, это бесплатно, появятся 2 окна, ввести в них код сертификата и ключ, все автоматом подключится. Хотя в некоторых случаях, для платежных систем все же придется покупать ip.

    ОтветитьУдалить
    Ответы
    1. Спасибо, добрый человек! Реально полезная проходилка :)

      Удалить
  2. Добрый день. После окончания срока, какие действия необходимы для перевыпуска сертификата?

    ОтветитьУдалить
  3. Здравствуйте, спасибо за мануал, подскажите пожалуйста, в пункте 4 есть шаги: "Затем другой командой сохраним нужное содержимое в файл с нужным названием:
    echo "FILECONTENT" > /home/u313809/mysite.ru/www/.well-known/acme-challenge/FILENAME
    , где FILECONTENT и FILENAME возьмем из пункта "Step 4: Verify Ownership" для каждого домена и поддомена свои." а что имеется в виду возьмем из пункта 4?

    ОтветитьУдалить

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

Популярные сообщения из этого блога

Как найти все товары одного магазина в Яндекс.Маркет

Как правильно настраивать RTB блоки РСЯ для повышения дохода?

Как отслеживать клики по РСЯ рекламе на вашем сайте в Метрике