Почему для Вашего сайта важен протокол HTTPS и как на него перейти?
Почему важно, чтобы ваш сайт работал на протоколе HTTPS и как подготовить свой сайт, чтобы он поддерживал передачу данных через защищенный протокол?
Сегодня, уже не так легко найти сайты, которые работают на протоколе HTTP без шифрования. Пару лет назад Google заявил, что будет понижать в рейтинге сайты, которые работают на HTTP и все побежали подключать сертификаты безопасности. И правильно сделали.
Google постоянно работает над улучшением своих алгоритмов. И он стремится показывать в поисковой выдаче качественные ресурсы. Это повышает его рейтинг среди др. поисковиков и дает преимущество над конкурентами. Понятно, что медленные и небезопасные сайты он будет понижать в выдаче. Google не хочет связываться с некачественными сайтами — это вредит его репутации.
Что такое протокол HTTP?
HyperText Transfer Protocol — протокол передачи гипертекста.
Это протокол передачи данных между вашим браузером (приложением и т.д., дальше Клиент) и Сервером. Протокол разработали в 1991 г. и потом усовершенствовали.
Как работает передача данных на протоколе HTTP?
Вы вводите в адресной строке браузера адрес сайта. Браузер отправляет запрос на сервер (правда, сначала он отправляет запрос на DNS-сервер, чтобы получить IP-адрес WEB-сервера), открывается соединение и при этом используется 80-й порт. Данные которые передаются не зашифрованы. Сервер отправляет ответ браузеру. Браузер начинает отрисовку (рендер) страницы. Дальше браузер находит в документе ссылки на файлы CSS, JS и на изображения. Чтобы получить все эти файлы, браузер снова открывает отдельное соединение и отправляет запрос на получение файла CSS, потом в отдельном запросе на картинку, потом на следующую картинку и т.д.
Для получения каждого файла открывается отдельное соединение и происходит запрос-ответ. При этом все др. запросы стают в очередь.
Со временем сайты стали сложнее, для отрисовки страницы нужно было получить десятки файлов, картинок, т.е. выполнить множество запросов. Из-за этого сайты стали медленными. Также, возникла проблема с безопасностью. Запросы от клиента до сервера можно было легко перехватить и этот протокол не подходил для проведения платежей, передачи персональных данных в социальных сетях, работы с почтой, обмена сообщениями и т.д. Интернет вышел на новый уровень и требовал более безопасных способов передачи данных.
Важно: протокол HTTP медленный и небезопасный. Его использование сегодня негативно повлияет на позиции вашего сайта в поисковиках и на доверие пользователей.
HTTP/2 — новая версия протокола HTTP
В феврале 2015 г. протокол HTTP был пересмотрен и была разработана вторая основная версия в виде HTTP/2. Так появился HTTPS. Это не новый протокол, это расширение обычного протокола HTTP.
Какая разница между HTTP и HTTP/2?
1) Шифрование — данные которые передаются между клиентом и сервером шифруются. И вообще, чтобы состоялась такая передача клиент и сервер должны «поприветствовать» друг друга и выполнить «рукопожатие». В результате таких взаимодействий складываются доверительные отношения. Сервер отправляет клиенту сертификат и открытый ключ. В сертификате содержится информация о сервере. Чтобы этот сертификат постоянно не передавать от сервера к клиенту, клиент его сохраняет у себя (на компьютере).
2) Скорость передачи (мультиплексирование) — за одно соединение передается группа запросов и обратно передается группа ответов. Появляется такое понятие как потоки. Одновременно может происходить обмен данными между клиентом и сервером, при этом потоки не ждут друга друга, нет задержек и нет очереди. Мы можем передавать большие массивы данных за короткое время. В результате мы получаем быстрые сайты.
3) Используется другой порт — 443.
4) Заголовки в ответах сервера сжимаются — это тоже ускоряет передачу данных.
Как вы поняли сегодня работа сайта на HTTPS является обязательной. Сайты на этой версии протокола быстрее работают и к таким сайтам больше доверия как со стороны поисковиков, так и со стороны пользователей.
Как получить сертификат безопасности (SSL)?
Как только вы зарегистрировали домен и хостинг, то следующее, что вы должны сделать это получить сертификат безопасности SSL для своего сайта. Большинство хостинг-провайдеров предоставляют бесплатные сертификаты. Но, есть и платные сертификаты безопасности.
Какая разница между сертификатами? Какой тип сертификата выбрать?
Разница между сертификатами в проверках владельца. Чем выше уровень сертификата, тем выше доверие к владельцу сайта.
По способу проверки владельца, сертификаты бывают следующие:
SSL с проверкой домена — в этом случае, при регистрации домена от Вас потребуется подтвердить только права на домен.
SSL с проверкой компании — при регистрации потребуется подтверждение принадлежности сайта регистрирующей компании, а также информация о компании.
SSL с расширенной проверкой — при открытии вашего сайта адресная строка браузера будет выделена зеленым цветом и в ней будет указано название Вашей компании. Высокий уровень доверия.
Для большинства некоммерческих и коммерческих сайтов подойдет бесплатный сертификат Let's Encrypt. Для юридических лиц нужно оформлять платные сертификаты безопасности.
Бесплатные SSL сертификаты:
Сертификат Let's Encrypt
Выдаются центром сертификации Let's Encrypt. Такие сертификаты выдаются только на 90 дней и их нужно продлевать вручную после завершения или на хостинге они обновляются автоматически. Бесплатные сертификаты от Let's Encrypt являются сертификатами типа «с проверкой домена», но от платного они отличаются полным отсутствием информации о регистрируемом сайте.
Рекомендую хостинг Beget — бесплатные сертификаты Let's Encrypt и автоматический перевыпуск на все ваши домены и поддомены. Зарегистрировать домен и получить сертификат SSL.
Самоподписанный SSL сертификат — низкий уровень доверия, не рекомендую. Злоумышленник может перехватить сертификат при передаче и заменить его своим поддельным, с помощью которого данные можно будет расшифровать. В результате, скомпрометированный таким образом сертификат невозможно исправить.
Способ шифрования данных не отличается во всех типах сертификата, а все разновидности существуют для того, чтобы дать возможность сайту убедить пользователя в надежности компании и в том, что она позаботится о сохранности Ваших личных данных.
После того как был выдан сертификат, вы можете дальше делать установку WordPress, или др. систем управления контентом.
Что необходимо сделать на новом сайте после выпуска сертификата безопасности?
1.На хостинге включаем редирект — если такая опция присутствует.
На некоторых хостингах после выпуска сертификата SSL нужно дополнительно включить опцию редиректа.
После установки WordPress выполняем следующие действия:
2. Включаем принудительное использование SSL для авторизации и в админке сайта
В файл wp-config.php вставляем следующий код:
define( 'FORCE_SSL_ADMIN', true );
define('FORCE_SSL_LOGIN', true);
if (isset($_SERVER['HTTP_X_HTTPS'])&&$_SERVER['HTTP_X_HTTPS']==1)
$_SERVER['HTTPS']='on';
Включаем принудительное использование SSL для авторизации и в админке сайта.
б) Указываем редирект для поисковиков — в файле .htaccess, который находится в корне вашего сайта вставляем этот код:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Код не является универсальным и может вызывать ошибки на определенных хостингах. В этом случае, см. дальше:
для Masterhost:
RewriteCond %{HTTP:PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
для Джино:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
для Timeweb:
RewriteCond %{REQUEST_FILENAME} !^/\.well-known(.*)$
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Вместо вставки кода можно установить плагин Really Simple SSL — он укажет редирект.
Переводим на HTTPS рабочий сайт (сертификат безопасности подключили после создания сайта)
Выполните следующие действия:
Внимание! Перед выполнением следующих операций необходимо сделать полную резервную копию сайта. Автор статьи не несет ответственность за повреждение Вашего сайта или нарушение его функционирования.
1.На хостинге выпускаем сертификат безопасности.
2.Включаем на хостинге редирект (если такой параметр присутствует).
3.В БД сайта необходимо изменить все урлы с http:// на https://
Данные методы также подойдут если Вы переезжаете на новый домен.
Текстовая версия видео
Есть несколько способов (выберите один из них):
а) плагин Better Search Replace
Устанавливаем плагин в разделе Плагины — Добавить новый. В поиске указываем его название и выполняем дальнейшую установку и активацию. Или скачайте плагин здесь и установите в том же разделе.
В настройках плагина, в поле Искать указываем текущий адрес сайта. А в поле Заменить на указываем адрес сайта с HTTPS.
В поле Выбор таблицы выбираем все таблицы.
Изменение урлов можно сначала протестировать. Для этого отмечаем параметр Холодный запуск.
б) скрипт Search Replace DB
Скачиваем скрипт здесь. Распаковываем. Загружаем его папку в корень нашего сайта.
В браузере открываем следующий URL-адрес: http://ваш_сайт/Search-Replace-DB-master/
В полях SearchReplace указываем что на что хотим изменить. Например: http://ваш_сайт/ на https://ваш_сайт/
Database Details — указываем данные подключения к БД сайта (порт можно не указывать). Подсмотреть их можно в файле wp-config.php. После этого нажмите на кнопку Test connection, чтобы проверить соединение.
Which Tables — в каких таблицах БД хотим внести изменения. Выберите опцию All tables.
Let's Go — нажмите на кнопку Do a safe test run, чтобы запустить тест.
Если появилось такое уведомление, то игнорируем его:
Внизу вы увидите таблицу Базы данных, а также количество таблиц и строк которые будут затронуты. Вы можете просмотреть строки нажав на ссылку view changes.
После этого нажимаем на кнопку Search and Replace. Нас переспросят уверенны ли мы в этом и мы соглашаемся.
После выполнения скрипта проверяем работу сайта. Нас должно «выбросить» из админки для повторной авторизации уже на новом протоколе. А сайт должен успешно загружаться и работать.
Скрипт удаляем через FTP, файловый менеджер на хостинге или нажатием на кнопку Delete me.
в) SQL-запросы
В панели управления хостингом переходим в phpMyAdmin и открываем нашу БД.
На вкладке SQL вводим следующие команды:
UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','https://newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'https://newdomain.com');
UPDATE wp_links SET link_url = replace(link_url, 'http://olddomain.com', 'https://newdomain.com');
UPDATE wp_links SET link_image = replace(link_image, 'http://olddomain.com', 'https://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'https://newdomain.com');
UPDATE wp_usermeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'https://newdomain.com');
UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'https://newdomain.com');
http://olddomain.com - старый адрес на HTTP
https://newdomain.com - новый адрес на HTTPS
Перед внесением реальных правок в БД, вы можете протестировать правки, для этого нажмите на кнопку Имитировать запрос:
Так как имитация запроса прошла успешно, то мы дальше можем нажать на кнопку Вперед и выполнить все необходимые замены.
Если все прошло успешно, то мы увидим следующее:
г) WP-CLI tool
запуск теста:
wp search-replace 'http://domain.com' 'https://domain.com' --dry-run
рабочий запуск:
wp search-replace 'http://domain.com' 'https://domain.com'
4.Включаем принудительное использование SSL для авторизации и в админке сайта (см. выше)
5.В файле wp-config.php указываем следующее:
define( 'WP_HOME', 'https://ваш_сайт' );
define( 'WP_SITEURL', 'https://ваш_сайт' );
6.Указываем редирект для поисковиков — в файле .htaccess, который находится в корне вашего сайта (см.выше), или устанавливаем плагин Really Simple SSL.
7.В файле robots.txt меняем URL для HOST и SITEMAP:
Host: https://ваш_сайт
Sitemap: https://ваш_сайт/sitemap_index.xml
8.Выполняем переезд сайта в панели Яндекс Вебмастера.
Переходим в раздел Индексирование — Переезд сайта. Выбираем наш домен и отмечаем опцию Добавить HTTPS.
В Google Search Console выполнять такой переезд не нужно.
Возможные проблемы
Смешанный контент
Браузер сообщает нам, что соединение защищено частично и виной тому смешанный контент.
Нужно через консоль вебразработчика в браузере (CTRL+Shift+I) выяснить, что подгружается на сайте по незащищенному протоколу. Это может быть картинка или скрипт.
По возможности, это вручную исправляем. Если такой возможности нет, ставим плагин Really Simple SSL. Он помогает решить проблему смешанного контента.
Отсутствие заголовков безопасности
Инструмент Здоровье сайта может выдать, что защищенное соединение работает, но отсутствуют важные заголовки безопасности. Такие уведомления могут появляться после установки плагина Really Simple SSL. В этом случае, указываем вручную необходимые заголовки и закрываем вопрос.
Для этого находим и открываем в корне сайта файл .htaccess
Вначале файла указываем следующие строки:
# Really Simple SSL
Header always set Strict-Transport-Security: "max-age=31536000" env=HTTPS
Header always set Content-Security-Policy "upgrade-insecure-requests"
Header always set X-Content-Type-Options "nosniff"
Header always set X-XSS-Protection "1; mode=block"
Header always set Expect-CT "max-age=7776000, enforce"
Header always set Referrer-Policy: "no-referrer-when-downgrade"
# End Really Simple SSL
В WordPress 5.7 появится возможность одним кликом перейти с HTTP на HTTPS
В новой версии WordPress 5.7 появится возможность перехода с HTTP на HTTPS.
Инструмент Здоровье сайта покажет состояние защищенного соединения на вашем сайте и предоставит возможность одним кликом исправить все URL-адреса в БД. После этого не нужно будет вручную с помощью плагинов или скриптов править все URL-адреса в БД.
Появление новой версии WordPress 5.7 запланировано 9 марта 2021 г.
Источники
Что означает мультиплексирование в HTTP/2
Перенос сайта с изменением URL
Защитите свой сайт с помощью HTTPS