Перемещение сайта на HTTPS/SSL. Советы и хитрости

В 2014 году мы решили перейти на широко используемый в настоящее время протокол HTTPS для шифрования конфиденциальных данных, которые отправляются через наш веб-сайт. В рамках данной статьи будут даны некоторые полезные советы, основанные на нашем собственном опыте, которые могут пригодиться, если вы хотите осуществить переход с протокола HTTP на HTTPS.

Небольшая предыстория

В далеком 2014 году HTTPS стал горячо обсуждаемой темой после того, как получила огласку уязвимость Heartbleed. Эта уязвимость позволяла злоумышленникам перехватывать трафик, передаваемый через SSL/TLS. Также она дала им функция похищать и читать данные.

К счастью, эта ошибка была быстро исправлена после обнаружения. Этот инцидент стал предупреждением о том, что должное шифрование пользовательской информации в Интернете будет необходимостью и не может быть лишь дополнительной опцией.

Для того чтобы подчеркнуть важность шифрования конфиденциальных данных, Google Chrome, начиная с января 2017 года выводит явное предупреждение рядом с адресной строкой всякий раз, когда вы посещаете веб-сайт, который не использует шифрование для конфиденциальных сведений.

Как переключиться(смена протокола http на https)?

Так как важно, чтобы данные были в безопасности, в 2014 году мы предприняли меры, чтобы обеспечить наличие SSL-сертификатов на наших веб-сайтах. Если вы решите сменить протокол http на https,(а вы действительно должны это сделать!), есть пару моментов, которые надо учитывать, чтобы веб-сайт работал надлежащим образом после завершения перехода.

  • Необходимо настроить все внутренние ссылки. Это также означает обновление ссылок на ресурсы(при необходимости). Не забудьте пробежаться по используемой теме оформления и настроить ссылки на CSS, картинки и файлы JavaScript. Кроме того, можно без проблем настроить все ссылки, чтобы они начинались с « // » вместо « https: // ». В результате получатся URL-адреса, соответствующие протоколу.
  • Убедитесь, что CDN поддерживает SSL. Мы используем MaxCDN, который может без проблем изменить SSL на субдомен CDN.
  • Существуют разные уровни SSL(каждый со плюсами и минусами), которые вы можете легко выбрать. Об этом вы узнаете позже.
  • Убедитесь, что у вас есть каноническая ссылка в разделе <head>, чтобы правильно перенаправить весь трафик, поступающий с http: // на https://.

Google также опубликовал удобное руководство по переходу на HTTPS без существенного влияния на рейтинг веб-сайта, которое можно легко найти здесь.

Как это влияет на рейтинг?

Как было сказано в предыдущем разделе, переход от протокола HTTP к протоколу HTTPS может повлиять на рейтинг веб-сайта, если не спланировать все должным образом.

Однако, после перехода на HTTPS, со временем рейтинг будет улучшаться. В 2014 году поисковая система Google объявила о том, что наличие SSL-сертификата будет считаться положительным фактором при расчете рейтинга, так что игра следует свеч.

Для того чтобы Googlebot смог быстрее переиндексировать веб-сайт после перехода, переходите на https:// в часы с низким притоком трафика. Таким образом, Googlebot сможет использовать больше ресурсов сервера. Просто учтите, что для веб-сайта среднего размера может потребоваться некоторое время, чтобы восстановить рейтинг. У вас есть карта веб-сайта? Тогда Googlebot сможет пересчитать и переиндексировать веб-сайт ещё быстрее.

Параметр HTTPS и SSL на сервере

У многих хостинг-провайдеров есть сервис, позволяющий включать HTTPS или заказать SSL-сертификат. Есть пару типов сертификатов на выбор, отличающихся по нескольким настройкам. Каждый вариант также имеет в себя собственный ценник, так что перед покупкой убедитесь, что вы запросили сертификат, соответствующий потребностям и бюджету!

Если вы стеснены в плане бюджета, но разбираетесь в технических аспектах, взгляните на Let’s Encrypt, чтобы приобрести бесплатный(!) сертификат.

Сшивание OCSP(Online Certificate Status Protocol)

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

Это означает, что, как только браузер подключается к серверу, он проверяет действительность сертификата на основе копии, размещенной на сервере, а не запрашивает удостоверяющий центр, что приводит к значительному повышению производительности.

Apache

Прежде чем включить сшивание OCSP на сервере Apache, убедитесь, что вы используете версию Apache 2.3.3+, выполнив команду « apache2 -v »(или « httpd -v ») на сервере. Более ранние версии Apache не поддерживают эту возможность.

Если вы прошли процесс параметра HTTPS на сервере, как описано в разделе «Параметр HTTPS и SSL на сервере», то должны были познакомиться с конфигурацией VirtualHost , разработанной специально для использования в сочетании с HTTPS/SSL .

В этом файле выполните следующие действия:

  1. Внутри раздела <VirtualHost> </VirtualHost> вы должны добавить SSLUseStapling .
  2. Чуть выше раздела <VirtualHost> </VirtualHost> добавьте SSLStaplingCache shmcb:/tmp/stapling_cache (128000) .
  3. Убедитесь, что конфигурация корректна, запустив apachectl -t . Если это так, перезагрузите Apache , перезапустив сервис apache2 .

Nginx

Nginx также поддерживает сшивание OCSP . Перед изменением конфигурации сервера, пожалуйста, проверьте, что вы используете версию Nginx 1.3.7+ , выполнив команду « nginx –v » на сервере. Ранние версии Nginx не поддерживают эту возможность.

Если вы прошли процесс параметра HTTPS на сервере, как описано в разделе «Параметр HTTPS и SSL на сервере», то должны были познакомиться с конфигурацией Nginx , разработанной специально для использования в сочетании с HTTPS/SSL .

В файле конфигурации Nginx в разделе server {} добавьте следующие строки:

ssl_stapling on;ssl_stapling_verify on;ssl_trusted_certificate /etc/ssl/private/ca-certs.pem;

Последняя строка ссылается на файл, содержащий список доверенных сертификатов удостоверяющего центра. Этот файл применяется для проверки клиентских сертификатов при использовании OCSP .

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

Заголовок Strict Transport Security

Заголовок Strict Transport Security (HSTS) – это ещё одна удобная функцию, которая, по сути, заставляет браузеры использовать HTTPS-запрос вместо эквивалентного HTTP-запроса . Включение данной возможности относительно безболезненно.

Apache

Если вы используете Apache , сначала включите модуль Apache Headers , выполнив команду « a2enmod headers ». После этого необходимо всего лишь добавить следующую строку в конфигурацию VirtualHost (в раздел <VirtualHost> </VirtualHost> ), которую вы установили ранее для HTTPS :

Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"

Перезагрузите сервис Apache и готово!

Nginx

Для Nginx надо добавить следующую строку в раздел server{} конфигурационного файла сервера:

add_header Strict-Transport-Security max-age=31536000;

Тестирование

Для того чтобы убедиться, что SSL-сертификат работает правильно, зайдите на SSL Labs , укажите ваше доменное имя и посмотрите, какую оценку вы получите.

Перенаправление URL-адресов при переходе с протокола http на https

Для обеспечения правильного перенаправления запросов на URL-адреса HTTPS надо добавить дополнительную конфигурацию. Таким образом, трафик, который пытается поступить на веб-сайт через HTTP , автоматически будет перенаправлен на HTTPS .

Apache

В конфигурации VirtualHost , используемой по умолчанию (к примеру, в той, которая используется для HTTP-запросов ) добавьте следующие строки, чтобы обеспечить правильное перенаправление ( редирект ) URL-адресов :

RewriteEngine OnRewriteCond %{HTTPS} offRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Как и в случае с иными изменениями, которые мы вносили ранее, не забудьте перезагрузить Apache !

Nginx

В Nginx измените конфигурационный файл по умолчанию, который использовался для HTTP-запросов , модифицируйте его следующим образом:

server { listen 80; server_name your-site.com www.your-site.com;   return 301 https://your-site.com$request_uri;}

Не забудьте перезагрузить Nginx перед тестированием внесенных изменений.

Заключение

Необходимо ли переключаться на HTTPS ? Краткий ответ: «Да». Использование HTTPS гарантирует, что конфиденциальная (пользовательская) информация пересылается через Интернет более безопасным образом. Особенно, если вы имеете дело с финансовыми транзакциями, HTTPS будет обязательным.

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

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *