Привет друзья! Сегодня я покажу как настроть работу Вашего интернет магазина на движке OpenCart 2 по безопасному протоколу HTTPS и с использованием бесплатного сертификата SSL от Let`s Encrypt.
Использование защищенного протокола имеет ряд существенных плюсов при использовании:
- шифрует данные передаваемые по протоколу,
- защищает от атак с перехватом,
- повышает доверие пользователей,
- поисковые машины выставляют более высокий ранг у сайтов, которые используют HTTPS и понижают тех, кто не использует,
- с конца января 2017 сайты, использующие протокол HTTP будут помечаться как небезопасные.
В общем надо переходить…
Для начала сертификат Let`s Encrypt (или другой) нужно получить. Так как я почти все свои сайты располагаю на хостинге Beget.com, то там он выдается бесплатно (последний мне выдали за 2-3 дня с момента заказа). Если Вы заказываете (покупаете) там доменное имя, то все вообще делается автоматически.
Ладно, хватит рекламы 🙂 Допустим сертификат SSL у Вас есть.
- Включаем поддержку использования SSL в OpenCart.
Идем в админку сайта, там Система-> Настройки -> Сервер, ставим галочку в графе Security — Использовать SSL
2. Далее нужно настроить «301 редирект» — это перенаправление посетителей и поисковых роботов с одного URL-адреса (HTTP)на другой (HTTPS).
Делается это в файле .htaccess. Этот файл лежит в корне сайта (/название_сайта/public_html/)и изначально называется .htaccess.txt.
Подключаемся по FTP копируем к себе файл и вносим в него изменения — ищем строчку RewriteEngine On и сразу после нее дописываем:
#Редирект с www to non-www(https)
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
#Редирект с http to https
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
сохраняем файл с новым именем .htaccess и заливаем по FTP обратно на хостинг
3. Редактируем файл /название_сайта/public_html/config.php
В нем находим строчки:
// HTTP define('HTTP_SERVER', 'http://ваш-сайт/'); // HTTPS define(‘HTTPS_SERVER’, ‘http://site.ru/’);
и заменяем на следующее. Этим мы разрешим использовать https
// HTTP
define('HTTP_SERVER', 'https://ваш-сайт/');
// HTTPS
define(‘HTTPS_SERVER’, ‘https://site.ru/’);
4. Редактируем файл /название_сайта/public_html/admin/config.php
В нем:
// HTTP
define('HTTP_SERVER', 'http://site.ru/admin/');
define('HTTP_CATALOG', 'http://site.ru/');
// HTTPS
define(‘HTTPS_SERVER’, ‘http://site.ru/admin/’);
define(‘HTTPS_CATALOG’, ‘http://site.ru/’);
меняем на
// HTTP
define('HTTP_SERVER', 'https://site.ru/admin/');
define('HTTP_CATALOG', 'https://site.ru/');
// HTTPS
define(‘HTTPS_SERVER’, ‘https://site.ru/admin/’);
define(‘HTTPS_CATALOG’, ‘https://site.ru/’);
Заливаем файлы обратно на хостинг и все — магазин работает по протоколу HTTPS.
P.S.
В процессе работы выяснился один баг: в админке при просмотре и редактировании товара выскакивала ошибка «error undefined» . Лечится это установкой модуля Bug Fixes 2.1.0.2