Как перевести сайт на https бесплатно

Как перевести сайт на https бесплатно

Рассказываю на примере этого блога (bablofil.ru), перевод был осуществлен 26.12.2016 года, операция заняла около часа, с лечением подводных камней.

Этот способ подойдет тем, кто имеет доступ к конфигурационным файлам своего веб-сервера (здесь используется Nginx, и его конфигурацию я буду приводить в пример, хотя для Apache тоже будет работать, но конфиги придется крутить отдельно).

Сайт использует движок  WordPress, и в силу своих особенностей иногда это является проклятьем, тем более когда не хочешь ставить лишние плагины.

Сайт укрыт за CDN Cloudflare, и именно благодаря ему сертификат получен бесплатно (что это и зачем опишу отдельной статьей, если не знаете, погуглите и перенесите сайт туда, вещь хорошая).

Update: На следующий день сайт перестал открываться из-за CloudFlare )) Вместо шага 1 берите бесплатный сертификат на https://www.startssl.com, потом переходите к шагу два.

 

Шаг 1. Получаем сертификат на Cloudflare.

Логинимся (cloudflare.com), переходим на вкладку Crypto
Как перевести сайт на https бесплатно

Проматываем вниз, находим кнопку Create Certificate
"Как

Здесь можно ничего не менять, достаточно нажать кнопку Next

Как перевести сайт на https бесплатно

Заметили, ваш сертификат будет валиден в течении 15 лет:)
При выборе спрашивает, для какого сайта выдавать сертификат, я создавал для bablofil.ru.

Появится окно, в котором будет выведено содержимое сертификата и закрытого ключа, скопируйте текст из каждого раздела в отдельные текстовые файлы, неважно как вы их назовете, я называл “cert” для сертификата и “priv” для ключа.

Как перевести сайт на https бесплатно

Сертификаты получены, можно приступать к настройке.

Шаг 2. Настройка Nginx для работы с https

Перенесите созданные файлы на сервер, и припрячьте – почему-то в мануалах пишут, положите в папку с сайтом, я считаю это не очень безопасным, поэтому складываю в папки, которые к вебу отношения не имеют. Пусть в данном случае это будет папка /opt/certificates/.

Правим конфиг Nginx – у меня это /etc/nginx/sites-available/bablofil.ru.

В секции server – где сейчас настроен порт 80,  меняем порт на 443 и добавляем строки

 

Также, для себя я решил, что ВЕСЬ трафик будет идти через https, поэтому я хочу все запросы, приходящие на http отправлять на https, для этого я добавляю вторую секцию с портом 80, которая будет редиректить на https.

Окончательный конфиг выглядит так (да, две секции server в одном файле, если кто не знает):

Обратите внимание на строку  add_header Strict-Transport-Security "max-age=31536000; includeSubDomains"; , это включает HSTS  — механизм, активирующий форсированное защищённое соединение через протокол HTTPS. Google любит этот заголовок, да и вообще его рекомендуется указывать. В конце строки еще можно указать слово always, но это зависит от используемой версии Nginx.

Кстати, да, Worpdress работает на php7.0, если кому интересно, расскажу.

Рестартуем Nginx.

На этом этапе у вас уже должен работать https, но значок в адресной строке, скорее всего, остался прежним, потому что у вас (как было и у меня) смешанное содержимое. На странице встречаются ссылки как http://, так и https://, это считается нарушением безопасности, так что все ссылки нужно убрать.

Шаг 3. Настройка WordPress

Первым делом меняйте ссылки в header.php и footer.php в темах, все, что прописано как http:// меняйте на // (просто два слеша).

Просто два слеша означают, что браузер сам разберется, по какому протоколу сайт открывать. Например, //yandex.ru является вполне валидной ссылкой, все чаще встречаю такие на современных сайтах.

Еще нужно в админке, в общих настройках, поменять http:// на https:// для содержимого новых статей и отображения некоторых картинок. Вот так:

Как перевести сайт на https бесплатно

Казалось бы, дело в шляпе, но.. нет, шифрование не работает. Дело в том, что статьи, особенно картинки в них, вордпресс льет в базу в том виде, в каком вы статью создавали – если тогда было http://, значит у вас по всей базе сейчас http://. Сначала я пробовал решить эту ситуацию плагинами, типа force http, потом попробовал заменять слова на этапе обработки темы, но в итоге пошел простым и дуболомным способом: поменял все записи в базе одним запросом.

Подлючаетесь к mysql (можно через phpmyadmin, но у меня консоль), к базе своего сайта, и выполняете запрос

Ура, ошибка mixed content пропала, появился зеленый значок.

Последний шаг

Вернемся на Cloudlfare.com, в том же разделе Crypto включим полное шифрование. Теперь всё готово.

Как перевести сайт на https бесплатно

Может быть, что то я сумбурно описал или не раскрыл какой-то момент, задавайте вопросы в комментариях, буду исправляться!

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




Понравилась статья? Поделись с друзьями!

4 комментария

  1. Здравствуйте!

    Хороший у вас сайт, много полезной информации, все разложено по полочкам.

    Однако — есть одна проблемма под названием — отсутствие общения. Такое впечатление что я общяюсь с пустотой. У меня к вам огромнейшая просьба — назовитесь, обозначьте свои координаты!!!!

  2. Андрей, виноват товарищ генерал сразу и не узнал — было темно — запрос на друзья отправил — однако — буду ждать твоего появления здесь на этой странице

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *