Let’s Encrypt + ISPmanager = халява


В прошлой статье, я рассказал, что перевел свой вирусный сайт на https. Сейчас расскажу, как я это сделал.

Для начала стоит сказать, что на моих серверах стоит ISPmanager, а PHP у меня работает в связке Apache + Nginx.

В качестве сертификата я выбрал бесплатный Let’s Encrypt, который признан всеми браузерами и считается абсолютно безопасным. Почему на COMODO или еще какой-то платный, да потому что сайтов у меня много, и скорее всего все придется переводить на https, а платить ежегодно по 900 рублей за сайт — это дофига.

Приступаем:

  1. Изучаем этот мануал по ссылке и делаем все как там написано.
  2. Далее идем в панели ISPmanager Домены -> WWW-домены, выбираем нужный сайт и жмем Конфиг.
  3. Прокручиваем вниз и в нижней конфигурации вставляем перед строками location / { следующий код:
    location ~* ^/.well-known/ {
        allow all;
    }
  4. Дальше скачиваем и устанавливаем себе на сайт Search Replace DB. Эта тулза позволит вам заменить все http://site.ru на https://site.ru в вашей базе.
  5. После идем в wp-config.php и вставляем туда следующие строки:
    define('WP_HOME', 'https://SITE.RU/');
    define('WP_SITEURL', 'https://SITE.RU/');
    define('FORCE_SSL_ADMIN', true); 
    if(strpos($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') !== false) { $_SERVER['HTTPS'] = 'on'; }
  6. Далее, если ваша тема не оптимизирована под https, как у меня, и подгружаются внутренние скрипты через http, то вам понадобиться вставить мега костыль, который решит эту проблему, но его надо будет обновлять каждый раз после обновления wordpress. В общем, в файле index.php вместо
    require(dirname(__FILE__) . '/wp-blog-header.php');

    надо будет вставить:

    ob_start();
     require(dirname(__FILE__) . '/wp-blog-header.php');
     $html_of_page = ob_get_contents();
     ob_end_clean();
     echo str_replace('http://SITE.RU', 'https://SITE.RU', $html_of_page);

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


27 Сен, 2016

5 комментариев

  • GG

    27 сентября 2016

    3 — зачем это?
    4 пункт разве не проще сделать через pma? экспорт-замена-импорт
    5 — можно ведь сделать через админку, разве нет?
    6 — гораздо проще пройтись по файликам и сделать поиск-замену, делается текстовым редактором за несколько секунд и костыли городить не нужно

    да и в целом, мне кажется проще купить комодо за 10$ на 3 года, всяко будет лучше бесплатного

    Reply
    • Archil

      27 сентября 2016

      3. Без этого не подтверждался домен на стороне LetsEncrypt. По этому поводу бился очень долго с хостинг провайдером и создателями ISPmanager.
      4. Так тоже можно.
      5. Неа, через админку не поможет. По крайней мере мне не помогло.
      6. Тоже вариант.

      Покажите сертификат комодо за 10$ на 3 года.

      Reply
  • seoonly.ru

    27 сентября 2016

    Красота! Спасибос!

    Reply
  • SEOmd

    28 сентября 2016

    спасибо
    у тебя nginx?

    Reply
    • Archil

      29 сентября 2016

      На том сайте идет связка Apache + Ngninx

      Reply

Добавить комментарий