WordPress HTTPS, SSL и TLS — руководство для администраторов веб-сайтов

Опубликовано: 2021-02-01

Когда вы посещаете веб-сайт, ваш браузер (также известный как клиент ) отправляет HTTP- запрос на веб-сервер. Как только веб-сервер отправит ответ HTTP, браузер сможет отобразить страницу на вашем экране. Однако у HTTP-трафика есть проблема; это открытый текстовый протокол. Это делает его восприимчивым к слежке и вмешательству.

Если злоумышленник находится в той же сети, что и вы, он может перехватить и прочитать ваш HTTP-трафик. Они также могут изменить как ваши запросы к серверу, так и ответы сервера вам. Это известно как атака «человек посередине» (MitM). Это может легко произойти в общедоступных сетях Wi-Fi, например, в вестибюлях отелей и общественных местах.

Именно поэтому сайт должен быть на HTTPS — чтобы трафик нельзя было перехватить. В этой статье объясняется, что такое HTTPS, SSL и TLS. В нем также объясняется, как вы можете настроить свой веб-сайт WordPress для работы по протоколу HTTPS.

Оглавление

  • Что такое SSL и TLS?
  • Что такое HTTPS?
    • Как работает HTTPS?
      • Рукопожатие TLS
      • Открытый и закрытый ключи (пара ключей)
  • Действительно ли мне нужен HTTPS на моем веб-сайте WordPress?
    • Получение сертификата HTTPS TLS (также известного как SSL-сертификат)
    • HTTPS на общем и управляемом хостинге WordPress
  • Настройка WordPress HTTPS
    • Настройка веб-сервера
    • Настройка URL-адреса WordPress на HTTPS
    • Принудительное использование TLS на панели управления WordPress (дополнительные советы)
  • Добавление HTTP Strict Transport Security (HSTS)
    • Настройка HSTS на веб-сервере
    • Шифры TLS
    • Мой WordPress работает на HTTPS, безопасно ли это?

Что такое SSL и TLS?

Как только Интернет начал расти, стало очевидно, что нам нужен механизм для безопасной передачи информации между клиентом и сервером, чтобы никто не мог подслушивать или изменять трафик — используйте SSL или Secure Socket Layer. SSL — это протокол безопасности в Интернете, впервые разработанный Netscape еще в 1995 году для решения этой проблемы.

В частности, SSL предназначен для выполнения следующих задач:

  • Шифрование — для шифрования трафика, чтобы он не мог быть перехвачен неуполномоченными третьими лицами путем прослушивания,
  • Аутентификация — чтобы убедиться, что сервер, с которым разговаривает клиент, действительно является тем сервером, за которого они себя выдают,
  • Целостность — чтобы гарантировать, что данные, передаваемые между клиентом и сервером, не будут изменены кем-либо еще по пути.

Однако со временем исследователи безопасности выявили ряд проблем безопасности в SSL. Поэтому SSL был заменен TLS (протокол безопасности транспортного уровня). Несмотря на то, что внутренние различия между SSL и TLS существенны, цель TLS остается в основном той же.

ПРИМЕЧАНИЕ. Вы можете часто видеть, что SSL используется для ссылки на TLS. SSL является устаревшим протоколом и больше не является безопасным для использования. Однако из-за его популярности многие до сих пор используют SSL как аббревиатуру, но имеют в виду TLS .

Что такое HTTPS?

HTTPS или безопасный протокол передачи гипертекста — это безопасная версия протокола HTTP. HTTPS основан на Transport Layer Security (TLS), улучшенном и более безопасном протоколе, чем использовавшийся ранее протокол Secure Socket Layer (SSL). TLS обеспечивает шифрование, аутентификацию и целостность запросов и ответов HTTPS.

Вы можете думать о HTTPS как о запросах и ответах HTTP (это версия протокола с открытым текстом), проходящих через туннель TLS. Технический термин для этого — инкапсуляция . Уместно отметить, что TLS может использоваться для инкапсуляции других протоколов, а не только HTTP.

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

HTTP-сайты, помеченные как небезопасные

Как работает HTTPS?

Когда вы запрашиваете веб-страницу с помощью HTTPS, ваш браузер и веб-сервер запускают процесс, называемый рукопожатием TLS . Рукопожатие TLS — это способ, с помощью которого клиент и сервер решают, должны ли они взаимодействовать и как. В ходе рукопожатия TLS клиент и сервер делают следующее:

  • решить, какую версию протокола TLS использовать (TLS 1.0, 1.2, 1.3…),
  • договориться о том, какие наборы шифров (набор алгоритмов шифрования, используемых для установления безопасной связи) использовать,
  • аутентифицировать личность сервера,
  • генерировать ключи шифрования для использования после завершения рукопожатия, чтобы безопасно общаться.

Рукопожатие TLS

Во время рукопожатия TLS сервер отправляет клиенту свой сертификат, чтобы клиент мог проверить, может ли он аутентифицировать сервер. Сертификат похож на паспорт — он выдается доверенным центральным органом, называемым Центром сертификации (ЦС), который самостоятельно устанавливает подлинность веб-сайта, что может быть подтверждено вашим браузером.

Открытый и закрытый ключи (пара ключей)

Сертификат TLS (часто называемый сертификатом SSL), который веб-сервер отправляет клиенту, содержит открытый ключ . Открытый ключ — это один из двух специальных ключей, называемых keypair . Пара ключей состоит из двух ключей; открытый ключ и закрытый ключ . В то время как открытый ключ передается клиентам, закрытый ключ хранится на сервере в секрете и никогда не раскрывается. Пара ключей выкована вместе.

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

Если это звучит странно, подумайте об этом так, как если бы «сервер» отправил вашему «браузеру» открытый чемодан (открытый ключ), защищенный замком — как только вы поместите что-то в чемодан и заблокируете замок, только «сервер» с ключ к навесному замку (закрытый ключ) можно увидеть, что внутри.

Действительно ли мне нужен HTTPS на моем веб-сайте WordPress?

да. Независимо от того, какой трафик обслуживает ваш веб-сайт (будь то личная информация (PII), данные держателя карты или изображения кошек), нет абсолютно никаких причин , по которым вы не должны обслуживать свой веб-сайт через HTTPS.

Прежде всего, когда вы запускаете свой сайт по протоколу HTTP, хакеры могут легко украсть ваши пароли и учетные данные WordPress и взломать ваш сайт. Все это они могут сделать с помощью свободно доступных инструментов.

Помимо преимуществ в плане безопасности и лучшего взаимодействия с пользователем, новый протокол HTTP/2, предлагающий несколько преимуществ в производительности, нельзя использовать без TLS в веб-браузерах. Кроме того, HTTPS также имеет преимущества поисковой оптимизации (SEO) и является частью алгоритма поискового ранжирования Google.

Получение сертификата HTTPS TLS (также известного как SSL-сертификат)

Для настройки HTTPS вам понадобится сертификат TLS, если вы настраиваете все самостоятельно. Хотя вы увидите десятки предложений платных сертификатов TLS, вы можете получить бесплатный сертификат TLS от некоммерческого центра сертификации под названием Let's Encrypt. Нет абсолютно никакой разницы между сертификатом, который вы получаете от Let's Encrypt бесплатно, и сертификатом, за который вы платите.

HTTPS на общем и управляемом хостинге WordPress

Обратите внимание, что для решений для управляемого или общего хостинга ваш хостинг-провайдер может взимать или не взимать плату за добавление HTTPS — в этом случае, прежде чем тратить деньги на сертификат, спросите их службу поддержки, можете ли вы использовать сертификат Let's Encrypt с их обслуживание вместо этого. Форумы сообщества Let's Encrypt также являются отличным ресурсом, который может вам помочь.

Настройка WordPress HTTPS (принудительное использование TLS на вашем сайте WordPress)

Есть несколько способов применить TLS на вашем веб-сайте WordPress в зависимости от вашей настройки. В большинстве случаев вы либо настроите свой веб-сервер для перенаправления всего HTTP-трафика на HTTPS (обратитесь к генератору конфигурации SSL Mozilla.

Вам также необходимо настроить WordPress для прослушивания HTTPS. Вы можете сделать это с помощью таких плагинов, как Really Simple SSL или WP Force SSL. В этом примере мы увидим, как это сделать без использования дополнительных плагинов.

Настройка веб-сервера

Берегись

  • Будьте осторожны при копировании/вставке конфигураций веб-сервера и убедитесь, что вы точно знаете, что они делают, ознакомившись с документацией вашего веб-сервера.
  • Вы можете найти много примеров в Интернете, используя либо %{HTTP_HOST} (HTTP-сервер Apache), либо $http_host (Nginx) — оба они могут сделать ваш веб-сайт восприимчивым к атакам HTTP-заголовка хоста — вместо этого введите имя вашего хоста в вашей конфигурации, как показано ниже.

Если вы используете Nginx, вы можете настроить следующее:

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

В качестве альтернативы, если вы используете HTTP-сервер Apache, вы можете настроить следующее:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://www.example.com%{REQUEST_URI} [L,R=301]
<IfModule>

Настройка URL-адреса WordPress на HTTPS

После того, как вы включите HTTPS на своем веб-сервере, вам также потребуется настроить WordPress. Теоретически вы можете сделать это вручную: просто измените Адрес WordPress и Адрес сайта в общих настройках WordPress. Вам также необходимо выполнить поиск и замену в базе данных, чтобы изменить все ссылки вашего сайта с HTTP на HTTPS.

[СНИМОК ЭКРАНА]

Так что, скорее всего, гораздо проще использовать плагин для переключения вашего сайта WordPress на HTTPS. Вы можете использовать популярный плагин, такой как Really Simple SSL, который поможет вам в этом процессе.

Принудительное использование TLS на панели управления WordPress

TLS полезен, только если он используется. Таким образом, вы хотите убедиться, что ваш сайт WordPress не только поддерживает TLS, но и обеспечивает его соблюдение. Поскольку доступ к панели инструментов WordPress всегда должен осуществляться через HTTPS, WordPress включает специальный параметр конфигурации FORCE_SSL_ADMIN, для которого можно установить значение true в файле wp-config.php.

define('FORCE_SSL_ADMIN', true);

Берегись

  • В зависимости от настройки и конфигурации вашего веб-сайта (в частности, если вы используете обратный прокси-сервер) это может привести к тому, что запросы к вашей панели управления WordPress попадут в бесконечный цикл перенаправления. Для получения дополнительной информации о том, как это исправить, обратитесь к документации WordPress и всегда проверяйте свои изменения в тестовой среде, прежде чем внедрять их в рабочую среду.
  • Кроме того, убедитесь, что TLS уже настроен и работает правильно, прежде чем устанавливать для FORCE_SSL_ADMIN значение true.

ДОПОЛНИТЕЛЬНЫЙ СОВЕТ 1: Добавление HTTP Strict Transport Security (HSTS)

Хотя перенаправление всего вашего трафика на HTTPS — отличный шаг, к сожалению, у злоумышленников все еще может быть несколько хитростей в рукаве. Атака, известная как полоса SSL, позволяет злоумышленнику обмануть браузер, чтобы просмотреть сайт в HTTP вместо защищенного HTTPS, что полностью сведет на нет вашу тяжелую работу.

Для получения дополнительных (технических) подробностей об атаках с раздеванием SSL смотрите выступление Мокси Марлинспайк ниже.

В результате браузеры теперь реализуют HTTP Strict Transport Security или HSTS. HSTS — это не что иное, как простой HTTP-заголовок, который сообщает браузеру, что к этому конкретному веб-сайту никогда не следует обращаться через HTTP, отражая любые атаки SSL Strip.

Настройка HSTS на веб-сервере

Берегись

  • Не включайте HSTS, пока не будете уверены в HTTPS — любые посетители, получившие этот HTTP-заголовок, смогут просматривать ваш сайт только через HTTPS.
  • Всегда устанавливайте атрибут max-age — при желании вы можете установить низкое значение при первом развертывании HSTS (чтобы ограничить любые потенциальные проблемы) и увеличить его, когда вы будете более уверенно использовать HSTS.

Если вы используете Nginx, вы можете настроить следующее в блоке сервера, прослушивающем порт 443:

# HSTS (ngx_http_headers_module is required) (63072000 seconds)
add_header Strict-Transport-Security "max-age=63072000" always;

В качестве альтернативы, если вы используете HTTP-сервер Apache, вы можете настроить следующее в своем виртуальном хосте для прослушивания порта 443:

# HTTP Strict Transport Security (mod_headers is required) 
(63072000 seconds)
Header always set Strict-Transport-Security "max-age=63072000"

Дополнительный совет 2: настройка шифров TLS

Чтобы обеспечить безопасность передачи данных между браузером и сервером, обе стороны соглашаются использовать так называемый набор шифров — комбинацию алгоритмов аутентификации, шифрования и кода аутентификации сообщений (MAC) — для согласования настроек безопасности. , а также для безопасной передачи данных.

К сожалению, многие устаревшие шифры имеют уязвимости в системе безопасности и небезопасны для дальнейшего использования. Хотя решение о том, какие шифры использовать, является сложной задачей, генератор конфигураций SSL Mozilla упрощает выбор набора шифров TLS, который соответствует вашим потребностям. Там, где это возможно, попробуйте использовать современные или промежуточные профили, однако, в зависимости от вашего варианта использования, особенно если вам необходимо поддерживать устаревшие браузеры или соответствовать нормативным требованиям и требованиям, вам может потребоваться использовать немного другие конфигурации наборов шифров.

Если вы используете Nginx, вы можете настроить следующие шифры TLS (на основе промежуточного профиля Mozilla SSL Configuration Generator):

 # intermediate configuration
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES25
6-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDH
E-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;

В качестве альтернативы, если вы используете HTTP-сервер Apache, вы можете настроить следующие шифры TLS (на основе промежуточного профиля Mozilla SSL Configuration Generator):

# intermediate configuration
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off

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

Мой WordPress работает на HTTPS, безопасно ли это?

Зеленые значки замка и слова «безопасный» рядом с адресной строкой вашего браузера, возможно, навели вас на мысль, что HTTPS — это некая волшебная палочка, которая решает все проблемы с безопасностью веб-сайтов. К сожалению, это не так. Зеленый замок в строке браузера

HTTPS — это лишь небольшая часть безопасности WordPress: он позволяет посетителям просматривать ваш сайт через безопасное соединение . Однако он не защищает ваш сайт, как брандмауэр WordPress, и не делает его более безопасным. Это не означает, что он более безопасен, чем веб-сайт, работающий по HTTP. Как и любые другие средства защиты, HTTPS помогает решить часть проблемы.

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

  • Добавить двухфакторную аутентификацию
  • Установите плагин для мониторинга целостности файлов.
  • Применение надежных политик паролей WordPress
  • Ведите журнал активности WordPress для записи всех изменений, происходящих на вашем сайте.
  • Используйте хороший брандмауэр.