Использование SSL на сайте. Настройка сайта под SSL
- Подробности
- Категория: Для сайта
- Опубликовано 29.09.2014 13:05
В этом материале речь зайдёт о SSL-сертификатах, которые используются на сайтах.
SSL-сертификат представляет собой файл выданный подтверждающим лицом (компанией), который свидетельствует о том что данному сайту можно доверять. Грубо говоря, это показатель того что администратор сайта потратился на сертификат, чтобы доказать что он тру, а не рассылающий спам негодяй. Люди, видящие зелёный замочек в адресной строке сайта более охотно предоставляют личные данные и это факт.
Сертификаты SSL могут быть самые разные по уровням проверки подлинности, соответственно уровню доверия и цене. Цена сертификатов начинается от 300-500 рублей (PositiveSSL например) и уходит за 30000р. Эти цены указаны в год. Т.е. покупая сертификат, он остаётся с вами не навсегда а на тот период, который вы оплатили.
Можно сделать самоподписанный сертификат, но от него никакого толку не будет, поэтому лучше платно или бесплатно заказывать сертификат у сторонних компаний.
Бесплатно заказать самый простой сертификат с подтверждением домена и адреса электронной почты можно на сайте
Говорят что у бесплатных сертификатов есть минусы по сравнению с самыми дешёвыми платными. Например, есть слухи что не все браузеры поддерживают тот же самый сертификат от StartSSL. В любом случае если есть серьёзные намерения, то лучше потратить 500р в год и быть спокойным за качество сертификата начального уровня.
Думаю если вы захотите подробнее узнать о разновидностях сертификатов SSL, то сможете легко нагуглить это.
Зачем нужны SSL-сертификаты?
Во-первых, как уже говорилось ранее, наличие сертификата повышает уровень доверия у ваших посетителей и они уже без боязни могут вводить свои секретные данные вроде номеров карточек, логинов и паролей.
Если сайт не большой, то принципиально дорожить своими логинами и паролями мало кто будет, а вот если у вас серьёзный бизнес или особенно интернет-магазин, где просто необходимо осуществлять защищённый обмен данными во время покупки - тут уже другое дело.
Во-вторых, с августа 2014 года Google пообещала уделять сайтам с SSL более выгодные позиции в поисковой выдаче. Т.е. у Google это уже будет учитываться в формировании выдачи, а если есть у Гугла, то и Яндекс может вскоре подтянуться.
Вам нужно будет поменять все абсолютные пути к подключаемым файлам, которые начинаются с http на https.
Ну и в-третьих если вы разработчик приложений, то для того чтобы разместить своё приложение например в VK.COM, вам нужно иметь это приложение на сервере с SSL. Раньше это было необязательно, а теперь такие условия - для каждого приложения.
Из минусов это дополнительная нагрузка на ваш сервер, где хостится сайт. Нагрузка может быть серьёзной если у вас достаточное количество посетителей, учтите это.
Поставил сертификат. Что менять в сайте?
У некоторых возникают немало вопросов во время установки, настройки SSL-части на сервере. У некоторых это действительно превращается в танцы с бубном, а у некоторых обходится одними свистоплясками. В любом случае к процессу внедрения SSL на свой сайт и сервер нужно отнестись со всей внимательностью.
О том как настроить серверную часть чтобы работало SSL мы расписывать не будем. Под серверной частью я подразумеваю настройку Apache/nginx и все нюансы с этим связанные. В интернете есть инструкции как это сделать, а если на вашем сервере ISP Manager, то это превращается в простое дело.
Давайте поговорим что случится с вашим сайтом после открытия его через SSL, какие тонкости нужно учесть.
Допустим вы настроили на сервере SSL, теперь нужно проверить как работает сайт и всё исправить.
Заметьте если у вас закрытый на сайте зелёный замочек - значит всё в порядке с безопасностью, если нет - ищите проблему, т.к. что-то пытается загрузиться из внешнего источника.
1. Редиректы и htaccess
Для многих CMS нужно внести изменения в .htaccess файл чтобы всё работало должным образом. Нужно чтобы все страницы адреса http://domain.com/ редиректились на https://domain.com/. В CMS с этим могут возникнуть проблемы.
Давайте рассмотрим настройку работы через SSL в Joomla.
В настройках есть опция, включить SSL для всего сайта, но она обычно приводит к бесконечным переадресациям (цикличным). Нужно покопаться немного ручками чтобы всё заработало.
Для начала откройте файл configuration.php и в переменную $live_site укажите название вашего сайта вида: https://domain.com.
Добавьте после основной части файла .htaccess код:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-FORWARDED-PROTO} =http
RewriteRule (.*) https://%{HTTP_HOST}/$1 [R=301,L]
Если первые две строчки уже есть в файле, тогда их писать не нужно.
Некоторым помогает такой код:
RewriteCond %{HTTP:SSL} !=1 [NC]
RewriteRule ^(.*) https://domain.com/$1 [L,R=301]
Или вот такой:
RewriteEngine on
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [QSA,R=301,L]
<IfModule !mod_ssl.c>
Redirect permanent / https://domain.com
</IfModule>
Сделав правильную настройку ваш сайт будет открываться через https, но... он может лишиться стилей. Только буквы на белом фоне и картинки из статей. Чаще всего в этом виноват base-тег в Joomla, который не понимает что мы подключились через защищённое соединение и по прежнему выдаёт нам http протокол.
Чтобы это исправить откройте файл /libraries/joomla/document/html/renderer/head.php и Замените внутри условие if в следующем отрезке кода, чтобы выглядело так:
$base = $document->getBase();
if (!empty($base))
{
$buffer .= $tab . '<base href="' . str_replace("http://";,"https://";,$base) . '" />' . $lnEnd;
}
Это конечно костыль, но что поделать... Это Joomla... Это хардкор...
С Джумлой на этом мы заканчиваем, потому что у вас о том о чём мы писали уже должно работать.
2. Данные сайта
Теперь будьте предельно внимательные. Все ваши ссылки на все файлы должны начинаться с https, а не с http.
Если вы зашли на сайт через защищённое соединение, то вы не сможете получить например CSS-файл через http. Такие дела. Поэтому надо исправить все ссылки в вашем шаблоне.
Реклама на вашем сайте может перестать работать по той же причине. Например если у вас Adsense, то в коде объявлений вместо:
src="http://pagead2.googlesyndication.com/pagead/show_ads.js";
Поставьте
src="//pagead2.googlesyndication.com/pagead/show_ads.js";
Да и вообще всё что загружается из внешних источников на вашу страницу, так же должно иметь SSL или в противном случае ваш посетитель будет уведомлён что на странице имеются проблемы с безопасностью, а это не есть хорошо.
Надеемся вам понравился материал. Если возникли какие-то вопросы - пишите в комментариях.