SSL сертификат и настройка https на сервере
Раздел(ы): SSL сертификаты, Безопасность, Вебмастеру
Просмотры: 35995
Комментарии: 1
В июле 2015 года я перевел свой сайт на безопасный протокол HTTPS. Данная инструкция поможет вам без труда проделать тоже самое. Тем более, что постоянно витают слухе об отказе популярными браузерами незащищенного HTTP, в связи с чем, предвидится массовый переход на HTTPS.
Так же любой сайт на котором есть комментирование статей, форма подписки и окно поиска, можно формально подвести под закон о защите персональных данных, который требует использовать безопасные защищенные протоколы при передаче информации. Поэтому рано или поздно вам тоже придется столкнуться с необходимостью перевода сайта на HTTPS.
Как перевести сайт на HTTS
Пять простых шагов как перевести свой сайт на HTTPS
- Получение SSL сертификата
- Установка сертификата на сервер
- Настройка сайта, отказ от HTTP ссылок
- Настройка веб-сервера
- Информирование поисковых систем
Где взять SSL сертификат для сайта
Сразу стоит определиться к какой категории относитесь вы и ваш сайт. Если вы выступаете как частное (физическое) лицо, то вам доступен лишь один вид сертификата: DV (Domain Validation). Он самый простой, выпуск его занимает минимальное время. Необходимо лишь подтвердить права владения доменным именем. Если вы представляете юридическое лицо, то вам доступны все типы сертификатов. Выбирайте любой в зависимости от потребностей вашего сайта. Но готовьтесь к тому, что проверка займет длительное время, а сам сертификат может дорого стоить.
Ранее я писал, где взять сертификат бесплатно. Этот вариант отлично подходит блогерам и владельцам персональных сайтов. Как получить такой бесплатный сертификат хорошо описано на Хабре в статье-инструкции Получаем бесплатный SSL сертификат.
Установка сертификата на сервер
Перед приобретением Ssl сертификата следует выяснить возможность его использования у себя на хостинге. Если у вас виртуальный хостинг, то настроить использование HTTPS может только поставщик услуг хостинга. Заранее выясните у него такую возможность. Если у вас сервер, не важно виртуальный или выделенный, то сертификат SSL гарантированно можно установить или использовать.
Помните, что сертификат вы получаете на домен (доменное имя), а устанавливать его надо на сервер (веб-сервер).
Установка зависит от вебсервера. Apache и NGINX настраиваются по разному. Вот неплохая инструкция как все сделать своими руками Ручная установка SSL сертификата.
Но если вы на хостинге используете панель управления VestaCP, то все заметно упрощается. Эта панель позволяет установить сертификат для вашего домена прямо из веб-интерфейса.
Предполагаю, что подобная возможность есть и в других панелях управления.
Настройка сайта, отказ от HTTP ссылок
Настройками сайта нужно добиться того, чтобы замочек защищенного соединения всегда был закрытым на всех страницах вашего сайта.
Вполне возможно, что обратившись к своему сайту в первый раз по HTTPS протоколу вы увидите такую картину:
Как видите замочек открыт, а это значит, что посетитель получает часть информации в незащищенном виде. Если щелкнуть мышкой по раскрытому замку, то можно увидеть примерно следующее:
Что нужно сделать, чтобы устранить проблему открытого замка HTTPS:
- Исправить все внутренние ссылки на использование протокола HTTPS
- Если используете картинки с внешних ресурсов, которые не работают по HTTPS, то скопируйте изображения себе на сайт
- Отказаться от внешних сервисов и систем которые не работают по HTTPS
- Убрать все плагины которые работают только по HTTP
Как исправить все ссылки на сайте
Для начала следует принять за правило использовать все ссылки без указания протокола. Это решение я подсмотрел в коде вызова скрипта Google.Adsense. Если раньше ваши ссылки выглядели так http://domainname.tld/page1.htm, то теперь они должны выглядеть так //domainname.tld/page1.htm. Ссылки такого рода будут работать и по HTTP и по HTTPS.
Если ваш сайт использует для хранения данных MySQL, а таких большинство. То проще всего сделать дамп базы. Скачать его себе на компьютер. Так как дамп базы данных MySQL представляет собой обыкновенный текстовый файл, то можно с помощью обычного текстового редактора произвести замену внутренних адресов на вариант описанный выше. После чего дамп базы данных нужно залить на сервер обратно.
Также можно поступить и с внешними ссылками. Но только не ставьте принудительно протокол HTTPS, так как нет никакой гарантии, что внешний ресурс его поддерживает.
Картинки с внешних ресурсов
Часто вебмастера при публикации постов используют изображения с других сайтов. Возьмите за правило копировать их к себе на сайт. Вполне возможно, что внешний ресурс откуда вы скачиваете картинки для оформления своей статьи работает только по HTTP.
Внешние сервисы которые не поддерживают HTTPS
Мне пришлось отказаться от двух рекламных сетей из-за того, что они не поддерживают протокол HTTPS. Пользователи посещая мой сайт могли видеть рекламные баннеры которые подгружались по HTTP и раскрытый замок сообщал о незашифрованном трафике.
Плагины работающие по HTTP
На моем сайте оказалось два плагина которые никак не хотели работать по безопасному протоколу HTTPS. Пришлось от них отказаться. Кроме того я проверил весь HTML код сайта на предмет загрузки скриптов и прочего с внешних ресурсов. Многие на автомате заработали по безопасному протоколу. Так же вычистил кучу мусора и неиспользуемого кода.
После проведения всех вышеописанных процедур сайт полноценно заработал по протоколу HTTPS, и замок безопасности оставался закрытым при посещении всех страниц.
Настройка веб-сервера на использование HTTPS
Для поисковых систем сайты доступные по разным протоколам http://domainname.tld и https://domainname.tld — это совершенно разные сайты. Поэтому необходимо поисковому роботу указать, кто тут главный. Для это в файле robots.txt необходимо написать название сайта с явным указанием протокола:
Host: https://domainname.tld
Затем необходимо настроить принудительную переадресацию всех запросов на протокол HTTPS. Чтобы пользователь который набрал http://domainname.tld все равно попал на безопасную версию сайта https://domainname.tld.
Если вы используете вебсервер Apache, то можно поступить следующим образом, добавьте в файл .htaccess нижеследующий код:
RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Информирование поисковых систем об использовании протокола HTTPS
В панели для вебмастеров поисковых систем Яндекс и Google необходимо добавить и подтвердить новый сайт, указав версию https.
[pcenter][/pcenter]
Теперь у вас в списке сайтов будет две записи по сути об одном и том же сайте. Для Google дополнительных настроек больше делать не надо, достаточно присутствия 301 редиректа. А для Яндекса у сайта работающего по HTTP необходимо указать в качестве главного зеркала HTTPS версию сайта.
[pcenter][/pcenter]
Не забудьте для нового сайта указать файл Sitemap.xml.
Яндекс не гарантирует сохранение количества страниц сайта в поиске, его позиций или посещаемости в случае изменения главного зеркала.
На этом все настройки можно считать законченными. Теперь посетители общаются с вашим сайтом по защищенному протоколу. Поисковые системы Яндекс и Google со временем поменяют адрес вашего сайта в поисковой выдаче.
Благодарности
При написании этой инструкции были использованы следующие источники
Спасибо! Только эта статья помогла решить проблемы с моим сайтом. Но не все ссылки к фоткам в базе данных пришлось изменять на типа //domainname.tld/page1.htm. Почему-то некоторые работают как page1.htm, а замочек закрыт.