В последнее время Google все активнее подталкивает владельцев сайтов к переходу на защищенный протокол (HTTPS). И инициатива это абсолютно правильная.
Зачем вообще нужен именно этот протокол? Не вдаваясь в глубинные подробности, можно пояснить это так — в случае использования HTTPS-протокола, любой обмен данными между сайтом и браузером пользователя будет проходить в защищенном шифрованном канале. К примеру, вы авторизуетесь на сайте: если используется не шифрованный HTTP, ваш логин-пароль передается в открытом канале и может быть перехвачен и использован злоумышленниками. При использовании HTTPS, подобная возможность резко снижается, т.к. эти данные будут зашифрованы. Естественно, тоже самое касается и любых других персональных данных, данных платежных карт и т.д. Соответственно, вопрос «переходить или нет» в сущности, даже не стоит.
Понятно, что для интернет-банкингов и платежных систем использование HTTPS-протокола давно уже носило характер де-факто. Никто не станет пользоваться финансовым инструментом, данные которого передаются в открытом виде — это нонсенс. Но для остальных сайтов и блогов, использовать HTTPS или нет — это был вопрос выбора. И если раньше призывы Google носили больше рекомендательный характер (и, скажем прямо, массово игнорировались), то с недавних пор поисковик перешел к прямым предупреждениям. Так, с 56 версии Google Chrome, сайты, которые продолжат работать на незащищенном HTTPS будут явно помечаться как ненадежные.
А еще чуть позже Google грозится перейти к еще более жестким мерами и уже четко и явно указывать ненадежность сайта, использующего HTTP-протокол.
Для того, чтобы избежать подобного рода санкций, необходимо уже сейчас задуматься над переходом. И хотя все мы знаем, что «один переезд равен двум пожарам», на практике ничего особого сложного в смене протокола нет. Пошагово этот процесс выглядит так.
Шаг 1. Получаем и подключаем SSL-сертификат
До появления бесплатных сертификатов, именно в этом же первом шаге крылась основная проблема. SSL-сертификаты всегда были платными — стоимость начиналась от $30 в год и выше. Естественно, что для небольшого сайта или личного блога эту сумма была не то, чтобы неподъемной, но тратить ее, откровенно говоря, желания было мало. Однако с появлением Let’s Encrypt ситуация изменилась — сертификат начального уровня (а его нам и достаточно) стало возможно получить не только бесплатно, но также и практически мгновенно, в автоматизированном режиме.
Я пользуюсь хостингом «Украина», в нем процесс получения сертификата от Let’s Encrypt полностью автоматизирован и не требует от пользователя каких-либо специфических знаний. Для получения сертификата нам необходимо:
- зайти в «Панель управления»;
- выбрать раздел «Настройка SSL»
- Выбираем закладку «Let’s Encrypt сертификат» и нажимаем кнопку «Установить».
- Через несколько минут (иногда дольше — если очередь большая), мы получим наш сертификат, который автоматически будет установлен.
Все, больше никаких действий по поводу сертификата от нас не требуется. Сам сертификат выписывается на 3 месяца и будет автоматически продлеваться до тех пор, пока вы будете использовать хостинг или Let’s Encrypt не изменит правила.
Для того, чтобы убедиться, что с сертификатом все ок, можно воспользоваться, к примеру, сервисом «SSL Server Test».
Шаг 2. Исправляем «смешанное содержимое»
Шаг 2.1. исправляем в теме блога
После получения сертификата, мы, по-сути, уже можем переходить на HTTPS. Однако есть загвоздка — дело в том, что ссылки на файлы, которые прописаны у нас в теме, CSS-файлах и контенте, могут (а чаще всего так и есть) быть абсолютными, что при загрузке страницы в HTTPS вызовет ошибку «смешанное содержимое».
Что вообще означает эта ошибка? Если скрипты, картинки и прочий контент будет продолжать подгружаться по HTTP, то не смотря на включенный HTTPS, их всё ещё можно подменить, перехватив при этом данные пользователя или подменив страницу — соответственно, такая возможность делает использование HTTPS на странице бессмысленным. Именно поэтому эту ситуацию нужно исправить.
К примеру, мы загружаем страницу www.proofsite.com.ua в HTTPS (https://www.proofsite.com.ua), но внутри темы ссылка на картинку-логотип прописана как абсолютная и с явным указанием протокола HTTP
http://www.proofsite.com.ua/images/logo.png
мы получим ошибку смешанного содержимого. Следовательно, нам нужно открыть файл темы header.php и исправить ссылку на относительную. То есть написать:
/images/logo.png
Таким образом, теперь картинка логотипа будет загружаться по тому же протоколу, по которому вызывается вся страница.
Если по какой-либо причине, вы не можете изменить ссылку на относительную, то можно указать как абсолютную, но без указания протокола:
//www.proofsite.com.ua/images/logo.png
Как видите, в этом формате записи убрано «HTTP» и браузер будет самостоятельно выбирать тот тип протокола, по которому загружается вся страница.
Соответственно, аналогичные действия нужно провести с любыми картинками, файлами, css-стилями и скриптами, которые вызываются при загрузке страницы.
Шаг 2.2 исправляем в CSS
Иногда в CSS-стилях возникает проблема смешанного содержимого в конструкции «background-image». Для ее исправления, нужно открыть файл стилей и убрать у ссылки на файл фонового изображения протокол. Получится так:
background-image: url(//www.ваш-сайт.com/wp-content/themes/[имя-темы]/images/background.png);
Шаг 2.3 исправляем в контенте
Если с темой и CSS все можно сделать вручную более-менее быстро, то с контентом придется повозиться. Дело в том, что WordPress при добавлении изображения через редактор, по-умолчанию прописывает абсолютные ссылки. Соответственно, сейчас все наши ссылки загружаются по HTTP-протоколу, что продолжает вызывать ошибку смешанного содержимого. Если у вас немного статей — можете исправить эти ссылки вручную, но если статей больше десятка — придется воспользоваться заменой в базе данных.
Для этого нам понадобится доступ к phpMyAdmin. В панели управления хостинга «Украина» ссылка на вход в phpMyAdmin находится в разделе «MySQL».
Открываем закладку «SQL» и выполняем следующую команду:
UPDATE wp_posts SET post_content = replace(post_content, "http://www.proofsite.com.ua", "//www.proofsite.com.ua);
Таким образом, мы изменим в таблице «post_content», содержащей контент записей, протокол у ссылок и теперь при загрузке страницы браузер сам определит — по какому протоколу вызывать файлы.
Шаг 3. Проверяем работу HTTPS
Теперь, когда проблема смешанного содержимого устранена, нам нужно проверить — действительно ли мы все сделали правильно. Для этого открываем наш сайт по протоколу HTTPS.
https://www.proofsite.com.ua
если все сделано верно, то мы должны в адресной строке зеленую надпись «Надежный». Соответственно, такая же надпись должна быть на любой внутренней странице.
Если адресная строка выглядит не так, как выше, а при нажатии на «i» мы видим сообщение «Подключение к сайту защищено не полностью», значит что-то сделано не верно.
В чем причина ошибки «Подключение к сайту защищено не полностью», мы можем узнать, нажав на ссылку «Подробнее». Перед нами откроется окно с указанием на нашу проблему — «Mixed Content» («Смешанный контент»).
Соответственно, нам нужно это исправить. Для этого выбираем закладку «Console» («Консоль») в списке сверху и получаем список наших ошибок, указанных как «Mixed Content» («Смешанный контент»).
Далее индивидуально исправляем все указанные проблемы.
Шаг 4. Переводим блог на HTTPS
Теперь нам нужно указать для всего блога режим работы в HTTPS. Для этого открываем админ-часть нашего блога и заходим в «Настройки» -> «Общие». Здесь нас интересуют 2 строки:
Адрес WordPress (URL)
Адрес сайта (URL)
Для обеих строк меняем протокол и сохраняем.
Шаг 5. Прописываем 301 редирект с HTTP на HTTPS
После смены протокола в настройках WordPress, наш сайт все еще доступен по двум протоколам, что по-сути, создает дубли контента. А поисковики этого очень не любят — соответственно, нам нужно выбрать основной протокол для блога. Для этого нам необходимо открыть файл .htaccess и вставить в него следующие строки:
RewriteEngine On RewriteBase / RewriteCond %{HTTP:SSL} !=1 [NC] RewriteRule ^(.*) https://www.proofsite.com.ua/$1 [L,R=301]
Теперь при вызове страниц сайта по HTTP, запрос будет автоматически переадресован на страницы с HTTPS.
Шаг 6. Сообщаем поисковикам о смене протокола
Шаг 6.1. Google
Для того, чтобы сообщить Google о том, что мы сменили протокол, нам нужно добавить HTTPS-версию сайта в Google Webmasters Tools как новый сайт. При этом HTTP-версию можно оставить. Также нужно добавить новую карту сайта и перенести настройки (если были) из HTTP-версии в HTTPS-версию.
Шаг 6.2. Yandex
Для Яндекса нам понадобится выполнить следующие действия:
- открыть «Инструменты вебмастера»;
- в меню выбрать пункт «Переезд сайта»;
- установить флаг «добавить HTTPS»;
Далее также как и в ситуации с Google, нам нужно добавить новую карту сайта с HTTPS-страницами. А также прописать главное зеркало в файле robots.txt:
Host: https://www.proofsite.com.ua
Заключение
Вот, собственно, и все. Теперь наш сайт загружается по HTTPS-протоколу, отмечается поисковиками как «Надежный», а нам остается только дождаться переиндексации блога и мониторить выдачу.