Использование SSL на сайте. Настройка сайта под SSL

ssl-security

В этом материале речь зайдёт о SSL-сертификатах, которые используются на сайтах.

SSL-сертификат представляет собой файл выданный подтверждающим лицом (компанией), который свидетельствует о том что данному сайту можно доверять. Грубо говоря, это показатель того что администратор сайта потратился на сертификат, чтобы доказать что он тру, а не рассылающий спам негодяй. Люди, видящие зелёный замочек в адресной строке сайта более охотно предоставляют личные данные и это факт.

Сертификаты SSL могут быть самые разные по уровням проверки подлинности, соответственно уровню доверия и цене. Цена сертификатов начинается от 300-500 рублей (PositiveSSL например) и уходит за 30000р. Эти цены указаны в год. Т.е. покупая сертификат, он остаётся с вами не навсегда а на тот период, который вы оплатили.

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

Бесплатно заказать самый простой сертификат с подтверждением домена и адреса электронной почты можно на сайте startssl.com.

Говорят что у бесплатных сертификатов есть минусы по сравнению с самыми дешёвыми платными. Например, есть слухи что не все браузеры поддерживают тот же самый сертификат от 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 или в противном случае ваш посетитель будет уведомлён что на странице имеются проблемы с безопасностью, а это не есть хорошо.

Надеемся вам понравился материал. Если возникли какие-то вопросы - пишите в комментариях.


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


Защитный код
Обновить

Карта сайта