В данной статье я хотел бы рассказать о собственном опыте переноса проекта с HTTP на модный HTTPS.

Немного теории: главное преимущество HTTPS-соединения перед HTTP заключается в поддержке шифрования. Это позволяет защитить передаваемый между клиентом и сервером трафик от возможного перехвата с целью расшифровки. Поэтому HTTPS настоятельно рекомендуется использовать на сайтах с большим количеством заполняемых пользователями форм — от контактной информации до платёжных реквизитов.

В моём случае у меня в распоряжении был как раз такой проект, а также свободное время и желание поэкспериментировать. Проект представляет из себя сервис для ведения отчётов по заполнению сайтов контентом, поэтому в нём просто огромное количество всевозможных форм для отправки данных на сервер. HTTPS в данном случае — то, что доктор прописал.

Выбор сертификата

Первым делом нужно определиться с типом SSL-сертификата. Есть множество статей, подробно описывающих каждый из них, поэтому я не стану их пересказывать, а лишь приведу свои выводы.

Во-первых, можно обойтись вообще без покупки сертификата, сгенерировав его самостоятельно и установив затем на сервер. Однако при первом заходе на такой сайт у каждого посетителя в браузере будет предупреждение о самоподписанном сертификате, что может вызвать если не подозрения, то как минимум раздражение от всплывающего окна с уведомлением. В моём случае такой вариант был неприемлимым, так как хотелось дать пользователям уверенность в безопасности работы с сервисом.

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

Подсветка строки HTTPS сайта с EV SSL-сертификатом

В итоге для проекта был выбран один из самых дешёвых сертификатов для физических лиц — Thawte SSL123.

Подготовка сайта

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

Затем осталось лишь выкатить уже подготовленную версию проекта с переписанными внутренними ссылками, исправленным robots.txt и настроенным редиректом с HTTP на HTTPS. Пошаговую инструкцию по подготовке сайта к HTTPS можно найти в одной из предыдущих записей. Захожу на сайт — вуаля, всё работает!

Подводные камни

Прошло полгода с момента перехода проекта на HTTPS и сейчас я могу назвать несколько проблем, с которыми я столкнулся.

Очень важно, чтобы абсолютно все ссылки на подгружаемый контент были через https. Сюда относятся скрипты, файлы стилей, изображения и даже веб-шрифты. В случае, когда ваш HTTPS-сайт подгружает какой-либо файл через HTTP-подключение, могут быть уведомления о том, что предоставляемая https защита перестала работать на 100%. Более того, часть браузеров может вообще не загружать такое смешанное содержимое, что в свою очередь приведёт к потере работоспособности сайта.

Совершенно неожиданной оказалась другая проблема. Когда я открыл панель разработчика в Firefox, чтобы поправить пару ошибок в вёрстке, я увидел повторяющееся предупреждение:

Ошибка в браузере с SHA-1 версией SSL сертификата

Если перейти по указанной ссылке, то можно узнать, что SHA-1 устарел и его использование в данный момент настоятельно не рекомендуется. И хотя пока что это никак не проявляется визуально для обычного посетителя, но нельзя дать гарантию, что в ближайшем времени разработчики браузеров не решат использовать более решительные меры. Поэтому для себя я решил оформить другой тип сертификата через полгода, когда действие текущего сертификата истечёт. Читателям блога тоже рекомендую заострить на этом внимание в момент выбора типа сертификата — ни в коем случае не выбирайте SHA-1.

Приятные моменты

Несомненно, пользы от HTTPS тоже достаточно. Лично мне было приятно даже просто видеть значок замочка в адресной строке браузера. Кроме того, в моём случае подключение HTTPS совпало с переездом проекта на другой домен, купленный в своё время у киберсквоттера. Я даже не поленился и разместил об этом новость на главной странице сайта.

Ещё один плюс в моём случае это возможность использовать ссылки на картинки через HTTPS-протокол. Дело в том, что в проекте используется система уведомлений клиентов через e-mail — например, о новых тикетах или о низком балансе. Для таких уведомлений я сверстал красивые шаблоны писем, содержащие помимо прочего иконки. Почтовые клиенты предъявляют ряд требований к графике в письмах, одно из них это ссылка через HTTPS. И если до подключения SSL мне приходилось использовать практически одноразовые ссылки с HTTPS-хостингов изображений, то теперь всё сделано по-человечески и используя только лишь собственные ресурсы.

Добавление картинок через HTTPS в email-сообщения

HTTP или HTTPS?

Сейчас наблюдается активное лоббирование перехода на HTTPS — инициатива исходит как от поисковых систем, так и от производителей браузеров. Я советую не упускать момент и перевести на безопасное соединение хотя бы наиболее важные проекты.