HTTPS или HTTP – что лучше и в чем разница
Что использовать при создании нового сайта – HTTP или HTTPS? Давайте разберёмся детальнее.
Что такое HTTP и HTTPS?
HTTP – протокол гипертекстовой разметки, используемый по стандарту для передачи любого рода данных в интернете. Аббревиатура расшифровывается как «hypertext transfer protocol». Суть проста: пользователь отправляет запрос на сервер расположения сайта, протокол форматирует данные определённым образом в процессе, а потом доставляет результат, браузер всё это преобразует в нужный вид. В общем, HTTP – это набор правил передачи информации между браузером клиента и сервером сайта.
HTTPS – тот же протокол, но со встроенным шифровальщиком: добавочная буква «S» в аббревиатуре означает «Secure», то есть «безопасный». Он задействуется для доменов, к которым подключён SSL-сертификат (Secure Sockets Layer). В общем, это – защищённая вариация стандартного протокола для конфиденциальной передачи данных, расшифровка которых потребует приватного ключа, хранящегося только на сервере. Шифрование происходит в обе стороны – на приём и передачу, поэтому в промежутке доставки они всегда находятся в зашифрованном виде.
Разница между HTTP и HTTPS
HTTP – открытый протокол передачи данных, а HTTPS – закрытый, имеющий надстройку шифрования. Первый по умолчанию использует 80 порт и никак не отображается в браузере, второй – 443, а его название отображается в браузере возле домена с пометкой серого значка замочка. Это сразу бросается в глаза. Увидев такой в адресной строке, можете не переживать – передаваемые данные шифруются сайтом, их не получится добыть третьим лицам. То есть сайты с HTTPS вызывают больше доверия у посетителей, ведь многие знают о значении этой технологии.
Данные, передаваемые по HTTP, меньше по объёму, поэтому их передача в обе стороны занимает чуть меньше времени. Но, если сайт нормально оптимизирован, то разница в скорости не будет бросаться в глаза. Да и многие пользователи понимают: лучше подождать пару секунд, не переживая, доберутся ли их деньги, реквизиты и пароли до сервера назначения в безопасности. Кроме того, поисковые системы, в частности, Google и Yandex считают HTTPS одним из признаков качественного сайта.
Преимущества протокола HTTPS
Использование HTTPS позволяет обезопасить пользовательские банковские транзакции и передачу другой личной информации вроде реквизитов, регистрационных данных пользователей соцсетей, магазинов и т. д. Даже если злоумышленник перехватит информацию, он попросту не сможет её расшифровать без ключа. Наличие подключенного HTTPS может быть учтено при ранжировании, поскольку поисковики считают использование защищенного HTTPS-протокола признаком заботы владельца о важной характеристике любого сайта – безопасности передачи данных.
Каким сайтам нужен HTTPS
HTTPS должен быть на каждом новом создаваемом сайте – это стандарт. Если у вас есть старые сайты на HTTP, к ним тоже следует подключить SSL-сертификаты, особенно если речь идёт об интернет-магазинах.
Как перейти на HTTPS?
Подключение SSL на конструкторах сайтов
В случае с конструкторами активация HTTPS обычно происходит по упрощённому алгоритму с использованием бесплатного SSL от Let’s Encrypt. Например, в конструкторе бизнес-сайтов uKit сертификат SSL подключается автоматически и бесплатно после прикрепления домена к сайту. То есть вам специально ничего делать не нужно – всё по умолчанию заработает как надо.
Подключение SSL на CMS
Если вы всё это делаете для действующего сайта, то для корректной работы все его ссылки должны быть переименованы с учётом приставки HTTPS. Общий смысл таков: нужно сделать все ссылки сайта относительными, чтобы все урлы стилей, картинок, веб-шрифтов, скриптов проходили через HTTPS.
Также не забудьте указать в Яндекс Вебмастер и Google Webmaster в настройках сайта, что основное зеркало сайта проходит по HTTPS.
Теперь насчёт колебания поисковых позиций в связи с переходом на защищённый протокол: если переезд сайта с HTTP на HTTPS будет сделан правильно, то никаких просадок в трафике наблюдаться не должно.
Выводы
Использование HTTPS – аксиома современного сайтостроения. Все новые сайты должны быть на нём, поскольку это даёт положительный отклик со стороны пользователей и поисковых систем. Получите более высокие позиции в выдаче, доверие со стороны клиентов и больше трафика.
В конструкторах сайтов процесс активации HTTPS упрощённый. Яркий тому пример – uKit, в котором всё происходит автоматически по умолчанию. При работе со связками хостинга и CMS придётся поработать вручную, установив сертификат и предварительно приведя в порядок URL, а также отключив переадресации на вариант без www. Старые сайты, если они до сих пор на HTTP, тоже рекомендуем переводить на HTTPS. Без него теперь никуда.
ИТ База знаний
Полезно
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
В чем разница между HTTP и HTTPS?
Что скрывает буква «S»
В данной краткой статье поговорим о разнице между HTTP и HTTPS.
Видео: HTTP или HTTPS – как работает и в чем разница?
Что такое HTTP?
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
Что такое HTTPS?
HTTPS также позволяет создать защищенное зашифрованное соединение между сервером и браузером. Он обеспечивает двунаправленную безопасность данных. Это помогает защитить потенциально конфиденциальную информацию от кражи.
В протоколе HTTPS SSL транзакции согласовываются с помощью алгоритма шифрования на основе ключа. Обычно длина ключа составляет 40 или 128 бит.
Ключевые различия
Преимущества HTTP:
Преимущества HTTPS
Ограничения HTTP
Ограничения HTTPS
Разница между HTTP и HTTPS
В приведенной ниже таблице показано различие между HTTP и HTTPS:
Hypertext Transfer Protocol
Hypertext Transfer Protocol Secure
Менее безопасен. Данные могут быть доступны для злоумышленников
Он предназначен для предотвращения доступа хакеров к критически важной информации. Защищен атак типа Man-in The-Middle.
Это хорошо подходит для веб-сайтов общего назначения, таких как блоги.*
Если на сайте нужно вводить конфиденциальную информацию, то данный протокол подходить больше
Нет защиты передаваемой информации. Любой, кто прослушивает трафик может получить доступ к данным
HTTPS шифрует данные перед передачей их по сети. На стороне получателя, данные расшифровываются.
Нет специального протокола. Работает поверх HTTP, но использует TLS/SSL шифрование.
Проверка названия домена
Сайтам с HTTP не нужен SSL
Для работы с HTTPS нужен SSL сертификат
Не использует шифрование
Не влияет на рейтинг поиска
Помогает увеличивать поисковый рейтинг
Уязвима для злоумышленников
Лучше защищен, использует шифрование данных.
*В настоящее время рекомендуется получать сертификат всем сайтам, так как это повышает доверие к нему. Тем более, что сертификат можно получить даже бесплатно.
**По современным меркам скорости подключения к Интернету, эта разница почти не ощущается.
Типы SSL/TLS-сертификатов, используемых с HTTPS
Теперь поговорим о типах SSL/TLS сертификатов, используемых с HTTPS:
Проверка домена
Проверка домена проверяет, является ли лицо, подающее заявку на сертификат, владельцем доменного имени. Этот тип проверки обычно занимает от нескольких минут до нескольких часов.
Проверка организации
Центр сертификации не только проверяет принадлежность домена, но и идентифицирует владельцев. Это означает, что владельцу может быть предложено предоставить документ, удостоверяющий личность.
Расширенная проверка
Онлайн курс по Linux
Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps
HTTP и HTTPS: в чём разница, и что использовать?
10 минут на чтение
Оглавление
Чем опасно использование HTTP?
Для того чтобы ответить на вопрос о целесообразности отказа от HTTP, необходимо понять, каким образом функционирует этот протокол.
Начнем с определения. HTTP — это аббревиатура, образованная от «Hypertext Transfer Protocol» («Протокол передачи гипертекста»). Веб-браузеры и серверы, используя протокол HTTP, указывают, что они являются частью Всемирной паутины (WWW). Проблема с HTTP заключается в том, что его изобрели в 1989 году. В то время разработчиков, как и пользователей, не очень беспокоил вопрос интернет-безопасности. Гораздо важнее было разработать унифицированный стандарт, который позволит пользователям со всего мира выходить онлайн и пользоваться нужными сайтами.
Проблемы с HTTP начались уже в 1990-х, одновременно с глобальным распространением интернета. Появилось много популярных сайтов, на некоторых ввели систему онлайн-платежей. Тогда и начали активно действовать злоумышленники. Они похищали пользовательские данные либо рушили серверы с сайтами. Киберпреступность процветала, в частности, из-за уязвимости в протоколе HTTP. Чтобы понять её суть, нам необходимо подробнее рассмотреть матчасть, и узнать, в чём отличие HTTP от HTTPS.
Принцип действия HTTP
Аналогичным образом устроен принцип действия HTTP. Если интернет-магазин использует этот протокол, то при отправке данных платежной карты по проводам в точности будет отправлен номер банковской карты. Злоумышленнику несложно перехватывать данные на промежутке между сайтом, которым пользуется покупатель, и сервером, на котором находится интернет-магазин. Так данные пользователей попадали к мошенникам.
Еще хуже, что хакеры могут перехватить трафик на сайт и добавить небольшие фрагменты кода (сниппеты) к каждому пакету данных. В марте 2015 года по такой схеме хакеры реализовали DDoS-атаку на сайты GreatFire.org и GitHub. Через серверы, которые предположительно имеют связь с «Великим китайским файерволом», хакеры смогли обрушить серверы GitHub. Сайт не работал на протяжении 5 минут, пока системные администраторы подключали резервный сервер. Это крупнейшая, но не единственная атака на сайт, которая стала возможной из-за использования протокола HTTP.
Сейчас, во время повсеместного распространения высокоскоростного интернета, использовать HTTP не нужно даже домохозяйкам, которые ведут небольшой блог о кулинарии. Впрочем, возможная атака на сайт — это не единственная угроза для владельца. Об этом мы скажем ниже.
Буква «s» в названии протокола HTTPS означает «secure», т.е. защищенный. Веб-браузеры и сайты, которые используют протокол HTTPS, отправляют данные, защищенные криптошифрованием. То есть на пути от компьютера пользователя до сервера веб-приложения информация курсирует в нечитабельном виде. Это рандомный набор знаков. Основное достоинство протокола заключается в том, что дешифровка данных происходит в рамках одной веб-сессии. То есть невозможно подобрать универсальный дешифровщик, который позволит приводить любые данные в удобочитаемый вид.
Рассмотрим подробнее, как функционирует протокол HTTPS. Для передачи данных используется подслой — криптографический протокол, который обеспечивает шифровку/дешифровку данных.
В вебе используют криптографические протоколы SSL (secure sockets layer) и TLS (transport layer security). Эти протоколы построены на алгоритме асиметричного ключа, который состоит из двух ключей — публичного и частного. Публичные ключи доступны и сайтам и браузерам, частные — хранятся на собственных серверах веб-приложений.
Сайты, которые используют HTTPS, имеют уникальный цифровой сертификат (например, SSL-сертификат), который выдан центром сертификации (Certification authority, CA). Когда интернет-пользователь заходит на такой сайт, сервер передает браузеру данные о сертификате и публичный ключ. Веб-браузер использует публичный ключ, чтобы установить цифровую подпись в сертификате. Затем веб-браузер сравнивает подпись с данными, которые получены от CA. Если сертификат действительный, будет установлено соединение с сайтом, а в адресной строке браузера появится пиктограмма в виде зеленого замка. В случае, если на сайте сертификат отсутствует или он не подтвержден браузером, появится соответствующее уведомление, а в адресной строке появится красный замок.
Осталось разобраться, почему в названии алгоритма присутствует слово «асиметричный». Самым примечательным в методе является тот факт, что для шифровки и дешифровки данных используются разные ключи. Например, пользователь передает данные на сайт. В этом случае веб-браузер шифрует данные при помощи публичного ключа. Но дешифровка на сервере осуществляется при помощи частного ключа, который, как мы уже говорили, всегда остается на сайте. Аналогичным образом информация передается с сервера на веб-браузер.
Таким образом, протокол HTTPS отличается от HTTP сложным многоуровневым методом установки соединения и криптошифрованием переданных пакетов данных.
🕸 Что такое HTTP и HTTPS?
a.akhunov
Что такое HTTP?
HTTP – широко распространённый протокол передачи данных, изначально предназначенный для гипертекстовых документов, то есть документов, которые могут содержать ссылки, позволяющие организовать переход к другим документам.

Также HTTP часто используется как протокол передачи информации для других протоколов прикладного уровня, таких как SOAP, XML-RPC и WebDAV. В таком случае говорят, что протокол HTTP используется как «транспорт». API многих программных продуктов также подразумевает использование HTTP для передачи данных – сами данные при этом могут иметь любой формат, например, XML или JSON. Как правило, передача данных по протоколу HTTP осуществляется через TCP/IP-соединения. Серверное программное обеспечение при этом обычно использует TCP-порт 80 (и, если порт не указан явно, то обычно клиентское программное обеспечение по умолчанию использует именно 80-й порт для открываемых HTTP-соединений), хотя может использовать и любой другой.
Как отправить HTTP-запрос?
Чтобы сформировать HTTP-запрос, необходимо составить стартовую строку, а также задать по крайней мере один заголовок – это заголовок Host, который является обязательным, и должен присутствовать в каждом запросе. Дело в том, что преобразование доменного имени в IP-адрес осуществляется на стороне клиента, и, соответственно, когда вы открываете TCP-соединение, то удалённый сервер не обладает никакой информацией о том, какой именно адрес использовался для соединения. Однако фактически сетевое соединение во всех случаях открывается с узлом 212.24.43.44, и даже если первоначально при открытии соединения был задан не этот IP-адрес, а какое-либо доменное имя, то сервер об этом никак не информируется — и именно поэтому этот адрес необходимо передать в заголовке Host.
Метод (в англоязычной тематической литературе используется слово method, а также иногда слово verb – «глагол») представляет собой последовательность из любых символов, кроме управляющих и разделителей, и определяет операцию, которую нужно осуществить с указанным ресурсом. Спецификация HTTP 1.1 не ограничивает количество разных методов, которые могут быть использованы, однако в целях соответствия общим стандартам и сохранения совместимости с максимально широким спектром программного обеспечения как правило используются лишь некоторые, наиболее стандартные методы, смысл которых однозначно раскрыт в спецификации протокола.
URI (Uniform Resource Identifier, унифицированный идентификатор ресурса) – путь до конкретного ресурса (например, документа), над которым необходимо осуществить операцию (например, в случае использования метода GET подразумевается получение ресурса). Некоторые запросы могут не относиться к какому-либо ресурсу, в этом случае вместо URI в стартовую строку может быть добавлена звёздочка (астериск, символ «*»). Например, это может быть запрос, который относится к самому веб-серверу, а не какому-либо конкретному ресурсу.
Как прочитать отчет HTTP-запроса?
Версия протокола здесь задаётся так же, как в запросе.
Код состояния (Status Code) – три цифры (первая из которых указывает на класс состояния), которые определяют результат совершения запроса. Например, в случае, если был использован метод GET, и сервер предоставляет ресурс с указанным идентификатором, то такое состояние задаётся с помощью кода 200. Если сервер сообщает о том, что такого ресурса не существует – 404. Если сервер сообщает о том, что не может предоставить доступ к данному ресурсу по причине отсутствия необходимых привилегий у клиента, то используется код 403. Спецификация HTTP 1.1 определяет 40 различных кодов HTTP, а также допускается расширение протокола и использование дополнительных кодов состояний.
Безопасность HTTP-запроса
Сам по себе протокол HTTP не предполагает использование шифрования для передачи информации. Тем не менее, для HTTP есть распространённое расширение, которое реализует упаковку передаваемых данных в криптографический протокол SSL или TLS.
На данный момент HTTPS поддерживается всеми популярными веб-браузерами.
Что такое HTTPS?
HTTPS (Hypertext Transport Protocol Secure) – это протокол, который обеспечивает конфиденциальность обмена данными между сайтом и пользовательским устройством. Безопасность информации обеспечивается за счет использования криптографических протоколов SSL/TLS, имеющих 3 уровня защиты:
В каких случаях необходим сертификат HTTPS?
Обязательное использование защищенного протокола передачи данных требует вся информация, касающаяся проведения платежей в интернете: оплата товаров в интернет-магазинах любым способом (индивидуальная платежная карта, онлайн системы платежей и пр.), оплата услуг через интернет-банкинг, совершение платежей в онлайн сервисах (казино, online-курсы и т.п.) и многое другое.
Если на вашем сайте используется что-либо похожее, то вам стоит серьезно задуматься над переходом на HTTPS. Поэтому далее мы рассмотрим, что для этого необходимо.
Что нужно для перехода сайта на HTTPS?
Работа протокола HTTPS основана на том, что компьютер пользователя и сервер выбирают общий секретный ключ, с помощью которого и происходит шифрование передаваемой информации. Этот ключ уникальный и генерируется для каждого сеанса. Считается, что его подделать невозможно, так как в нем содержится более 100 символов. Во избежание перехвата данных третьим лицом используется цифровой сертификат – это электронный документ, который идентифицирует сервер. Каждый владелец сайта (сервера) для установки защищенного соединения с пользователем должен иметь такой сертификат.
В этом электронном документе указываются данные владельца и подпись. С помощью сертификата вы подтверждаете, что:
Первое, что делает браузер при установке соединения по протоколу HTTPS – проверку подлинности сертификата, и только в случае успешного ответа начинается обмен данными.
Сертификатов существует несколько видов в зависимости от следующих факторов:
Это уже тема для отдельной статьи. Выдают их специализированные центры сертификации на возмездной основе и на определенный период, поэтому важно не забывать продлевать действие сертификата.
Для начинающих пользователей также интересна тема про инструменты, которые необходимы для тестирования своего API – я готов продолжить серию публикаций.
Полное руководство по переходу с HTTP на HTTPS
В наше время HTTPS обязателен для каждого веб-сайта: пользователи ищут замочек в адресной строке, когда передают личные данные; Chrome и Firefox недвусмысленно помечают как небезопасные веб-сайты с формами на страницах без HTTPS; это влияет на позиции в поисковой выдаче и оказывает серьёзное влияние на приватность в целом. Кроме того, сейчас имеется несколько вариантов получить бесплатный сертификат, так что переход на HTTPS — всего лишь вопрос желания.
Установка HTTPS может немного пугать неподготовленного пользователя — она требует многих шагов с участием различных сторон, а также специфических знаний криптографии и серверных конфигураций, да и вообще в целом кажется сложной.
В этом руководстве я объясню отдельные компоненты и шаги и ясно изложу каждый этап установки. У вас должно всё пройти гладко, особенно если ваш хостер сам предоставляет сертификаты HTTPS — тогда высока вероятность, что вы быстро и просто всё сделаете не выходя из панели управления.
Сюда включены детальные инструкции для владельцев виртуального хостинга на cPanel, администраторов серверов Apache HTTP и nginx под Linux и Unix, а также Internet Information Server под Windows.
Начнём с основ.
HTTP, HTTPS, HTTP/2, SSL, TLS: где что?
Для описания процесса коммуникации между клиентом и сервером используется много акронимов. Люди, незнакомые с технической сутью, часто путают их.
Hypertext Transfer Protocol (HTTP) — основной протокол связи, который должны поддерживать клиент и сервер, чтобы установить соединение. Он описывает такие понятия как запросы и ответы, сессии, кэширование, аутентификация и др. Работу над протоколом, а также над языком гипертекстовой разметки Hypertext Markup Language (HTML) начал в 1989 году сэр Тим Бернерс-Ли и его группа в ЦЕРН. Первая официальная версия протокола (HTTP 1.0) вышла в 1996 году, а вскоре в 1997 году появилась версия HTTP 1.1, которая широко используется сегодня.
Протокол передаёт информацию между браузером и сервером в чистом тексте, позволяя видеть эту информацию в сети, через которую она проходит. Это проблема безопасности, поэтому был изобретён HTTP Secure (HTTPS), позволяющий клиенту и серверу устанавливать зашифрованный канал связи, а затем передавать сообщения чистым текстом по этому каналу, эффективно защищая их от прослушивания.
Термины SSL и TLS часто используются как взаимозаменяемые, поскольку TLS 1.0 приходит на место SSL 3.0. Сам SSL был разработан в компании Netscape, а TLS — это стандарт IETF. На момент написания этой статьи все версии SSL (1.0, 2.0, 3.0) не рекомендуются для использования из-за различных проблем с безопасностью, и современные браузеры выводят предупреждения об этом. Из стандарта TLS используются версии 1.0, 1.1 и 1.2, а версия 1.3 сейчас на стадии черновика.
Так что где-то между 1996 и 1997 годами мы получили текущую стабильную версию Интернета (HTTP 1.1 с или без SSL и TLS), которая по-прежнему поддерживается на большинстве современных веб-сайтов. Ранее HTTP использовался для несущественного трафика (например, чтения новостей), а HTTPS применяли для важного трафика (например, аутентификации и электронной коммерции): однако увеличение значения приватности привело к тому, что браузеры вроде Google Chrome сейчас помечают веб-сайты HTTP как «не конфиденциальные» и в будущем будут выводить новые предупреждения для них.
В следующем обновлении протокола HTTP — HTTP/2 — которую поддерживает всё большее количество сайтов, реализованы новые функции (сжатие, мультиплексирование, приоритет разного трафика), чтобы уменьшить задержки и увеличить производительность и безопасность.
В HTTP версии 1.1 безопасное соединение является необязательным (у вас может быть HTTP и/или HTTPS независимо друг от друга), в то время как в HTTP/2 оно на практике обязательно — даже хотя стандарт допускает HTTP/2 без TLS, но большинство разработчиков браузеров заявили, что они реализуют поддержку HTTP/2 только через TLS.
Что даёт HTTPS?
Почему в первую очередь стоит думать о HTTPS? Его внедряют по трём основным причинам:
Криптография в основе
Конфиденциальность, целостность и проверка подлинности не являются уникальными особенностями HTTPS: это ключевые концепции криптографии. Давайте посмотрим на них более внимательно.
Конфиденциальность
Конфиденциальность представляет собой приватность — так и есть, она защищает информацию от чтения посторонними лицами. Обычно этот процесс предусматривает перевод информации из читаемой формы (в том числе аудио и видео), которая называется открытый текст, в зашифрованную, нечитаемую форму, которая называется шифротекст. Этот процесс именуется шифрованием. Обратный процесс — превращение нечитаемого шифротекста обратно в читаемый открытый текст — называется расшифровкой. Для шифрования и расшифровки информации существует много методов — шифровальных функций (или алгоритмов).
Чтобы две стороны могли общаться, они должны прийти к согласию по двум вопросам:
Симметричное шифрование (см. большую версию)
Асимметричные методы решают проблемы такого рода — они основаны на понятии публичных и секретных ключей. Открытый текст шифруется одним ключом и может быть расшифрован с использованием парного ему ключа.
Итак, как это работает? Предположим, что у нас есть две стороны, которые желают безопасно общаться друг с другом — Алиса и Боб (в каждом учебнике всегда используются такие имена вымышленных персонажей, в справочниках по безопасности и прочих, мы уважаем эту традицию). У каждого из них есть своя пара ключей: один секретный, а один публичный. Секретные ключи известны только их соответствующим владельцам; публичные ключи открыты для всех.
Если Алиса хочет отправить сообщение Бобу, она должна раздобыть его публичный ключ, зашифровать открытый текст и отправить ему шифротекст. Он затем использует свой секретный ключ для расшифровки.
Если Боб хочет отправить сообщение Алисе, он должен раздобыть её публичный ключ, зашифровать открытый текст и отправить ей шифротекст. Она затем использует свой секретный ключ для расшифровки.
Асимметричное шифрование (см. большую версию)
Когда мы используем симметричное, а когда асимметричное шифрование?
Асимметричное шифрование используется для обмена секретом между клиентом и сервером. В реальной жизни нам обычно не нужна двусторонняя асимметричная коммуникация — достаточно, если одна из сторон (назовём её сервер для простоты) владеет набором ключей, так что она может получать зашифрованные сообщения. В реальности это защищает информацию только в одном направлении — от клиента к серверу, потому что информация, зашифрованная публичным ключом, может быть расшифрована только с помощью парного ему секретного ключа: значит, только сервер может её расшифровать. Другое направление не защищено — информация, зашифрованная секретным ключом сервера, может быть расшифрована его публичным ключом, который открыт для всех. Другая сторона (также для простоты назовём её клиент) начинает коммуникацию с шифрования случайно сгенерированного секрета сессии публичным ключом сервера, затем отправляет шифротекст обратно на сервер, который, в свою очередь, расшифровывает его с помощью своего секретного ключа, и теперь владеет секретом.
Затем для защиты реальных данных при передаче используется симметричное шифрование, поскольку оно гораздо быстрее асимметричного. Обменявшись секретом, только две стороны (клиент и сервер) могут шифровать и расшифровывать информацию.
Вот почему первая асимметричная часть рукопожатия также известна как обмен ключами и вот почему реально зашифрованные коммуникации используют алгоритмы, известные как методы шифрования.
Целостность
Другая проблема, которую решает HTTPS — это целостность данных: 1) гарантия, что вся информация доставляется целиком; 2) гарантия, что никто не изменяет информацию при её передаче. Для обеспечения целостной передачи информации используются алгоритмы дайджеста сообщения. Вычисление кодов аутентификации сообщений (MAC) для каждого сообщения при обмене — это процесс криптографического хеширования. Например, для получения MAC (иногда он называется тегом) используется метод, который гарантирует практическую невозможность (иногда используется термин невыполнимость) осуществить следующее:
Проверка подлинности
Центры сертификации — это организации, которым доверяют подпись сертификатов. В операционных системах, таких как Windows, macOS, iOS и Android, а также в браузере Firefox есть список доверенных сертификатов.
Вы можете проверить, каким центрам сертификации доверяет ваш браузер:
Цепочка доверия (см. большую версию)
Вы можете добавить дополнительные центры сертификации, что полезно при работе с самоподписанными сертификатами (которые мы обсудим позже).
В большинстве типичных ситуаций клиенту нужно подтвердить идентичность сервера — например, сайта электронной коммерции для покупателей — так что только этому веб-сайту нужен сертификат. В других ситуациях, таких как системы электронного правительства, одновременно и клиент, и сервер должны доказать свою идентичность. Это означает, что обеим сторонам нужно предъявить сертификаты для проверки подлинности. Такая система тоже выходит за рамки этой статьи.
Типы сертификатов HTTPS
Существует несколько типов сертификатов HTTPS. Их можно классифицировать по следующим критериям.
1. Проверка подлинности
2. Количество покрываемых доменов
В давние времена сертификаты HTTPS обычно содержали в поле CN единственный домен. Позже было добавлено «альтернативное имя субъекта» (SAN), чтобы один сертификат покрывал и дополнительные домены. В наши дни все сертификаты HTTPS создаются одинаково: даже в сертификате на единственный домен будет поле SAN для этого единственного домена (и второе поле SAN для версии www этого домена). Однако многие продавцы по историческим причинам по-прежнему продают сертификаты HTTPS на один и несколько доменов.
Конфигурация
Чтобы подвести итог, четыре компонента HTTPS требуют шифрования:
Например, выбор ECDHE-RSA-AES256-GCM-SHA384 означает, что обмен ключами будет производиться по алгоритму Elliptic Curve Diffie-Hellman Ephemeral (ECDHE); центр сертификации подписал сертификат при помощи алгоритма Rivest-Shamir-Adleman (RSA); симметричное шифрование сообщений будет использовать шифр Advanced Encryption Standard (AES) с 256-битным ключом и будет работать в режиме GCM; целостность сообщений будет обеспечивать алгоритм безопасного хеширования SHA, с использованием 384-битных дайджестов. (Доступен полный список комбинаций алгоритмов).
Итак, нужно сделать выбор некоторых конфигураций.
Наборы шифров
Выбор набора шифров для использования — это компромисс между совместимостью и безопасностью:
Википедия содержит исчерпывающий список алгоритмов для всех компонентов TLS и указывает их поддержку в разных версиях SSL и TLS.
Mozilla SSL Configuration Generator — очень полезный и крайне рекомендуемый справочник, какие криптографические методы использовать на сервере. Мы позже будем использовать его в реальных серверных конфигурациях.
Типы ключей
Сертификаты Elliptic Curve Cryptography (ECC) быстрее обрабатываются и используют меньше CPU, чем сертификаты RSA, что особенно важно для мобильных клиентов. Однако некоторые сервисы, такие как Amazon, CloudFront и Heroku на момент написания этой статьи пока не поддерживают сертификаты ECC.
256-битная длина ключа для ECC считается достаточной.
Сертификаты Rivest Shamir Adleman (RSA) более медленные, но совместимы с большим разнообразием старых серверов. Ключи RSA больше по размеру, так что 2048-битный ключ RSA считается минимально допустимым. Сертификаты RSA с ключами 4096 бит и больше могут ухудшать производительность — к тому же, скорее всего, они подписаны 2048-битным ключом посредника, что по большей части подрывает дополнительную защиту!
Вы могли заметить расплывчатость заявлений, сделанных выше, и отсутствие каких-либо чисел. То, что может нагрузить один сервер, не нагрузит другой сервер. Лучший способ определить влияние на производительность — это проверить загрузку на своём собственном сервере, с реальным веб-сайтом и реальными посетителями. И даже это изменится со временем.
Процедуры
Для получения сертификаты HTTPS выполните следующие шаги:
Для начала, есть два популярных формата хранения информации — DER и PEM. Первый из них (DER) бинарный, а второй (PEM) — это файл DER в кодировке base64 (текст). По умолчанию Windows напрямую использует формат DER, а мир свободных систем (Linux и UNIX) использует формат PEM. Существуют инструменты (OpenSSL) для конвертации файлов из одного формата в другой.
В качестве примеров мы будем использовать такие файлы:
Секретный ключ — это случайно сгенерированная строка определённой длины (мы используем 2048 бит), которая выглядит примерно так:
——BEGIN RSA PRIVATE KEY——
MIIEowIBAAKCAQEAm+036O2PlUQbKbSSs2ik6O6TYy6+Zsas5oAk3GioGLl1RW9N
i8kagqdnD69Et29m1vl5OIPsBoW3OWb1aBW5e3J0x9prXI1W/fpvuP9NmrHBUN4E
S17VliRpfVH3aHfPC8rKpv3GvHYOcfOmMN+HfBZlUeKJKs6c5WmSVdnZB0R4UAWu
Q30aHEBVqtrhgHqYDBokVe0/H4wmwZEIQTINWniCOFR5UphJf5nP8ljGbmPxNTnf
b/iHS/chjcjF7TGMG36e7EBoQijZEUQs5IBCeVefOnFLK5jLx+BC//X+FNzByDil
Tt+l28I/3ZN1ujhak73YFbWjjLR2tjtp+LQgNQIDAQABAoIBAEAO2KVM02wTKsWb
dZlXKEi5mrtofLhkbqvTgVE7fbOKnW8FJuqCl+2NMH31F1n03l765p4dNF4JmRhv
/+ne4vCgOPHR/cFsH4z/0d5CpHMlC7JZQ5JjR4QDOYNOpUG51smVamPoZjkOlyih
XGk/q72CxeU6F/gKIdLt6Dx03wBosIq9IAE8LwdMnioeuj18qaVg195OMeIOriIn
tpWP4eFya5rTpIFfIdHdIxyXsd6hF/LrRc9BMWTY1/uOLrpYjTf7chbdNaxhwH7k
buvKxBvCvmXmd6v/AeQQAXbUkdSnbTKDaB9B7IlUTcDJyPBJXvFS1IzzjN6vV+06
XBwHx5ECgYEAyRZLzwnA3bw8Ep9mDw8JHDQoGuQkFEMLqRdRRoZ+hxnBD9V9M0T6
HRiUFOizEVoXxf6zPtHm/T7cRD8AFqB+pA/Nv0ug6KpwUjA4Aihf5ADp0gem0DNw
YlVkCA6Bu7c9IUlE0hwF7RLB7YrryJVJit9AymmUTUUHCQTWW2yBhC8CgYEAxoHS
HGXthin5owOTNPwLwPfU2o7SybkDBKyW69uTi0KxAl3610DjyA/cV2mxIcFlPv1y
HualGd9eNoeCMBy/AUtjzI0K77yeRpjj321rj6k8c8bYWPHH539SiBXLWTY/WQ0w
pxfT3d/Z4QMh5d6p+p5f3UIrXESYQd+fAaG5tNsCgYEAksTdTB4YUT9EsWr6eN9G
jPlclFQUKV3OMvq77bfYvg8EJORz32nnDDmWS7SUjoOtemwutBlMeWbaKk25aMp3
5JNMXuV6apeMJ9Dd8GU7qBUqlIvVK31/96XPvzmnYzWZPqRVwO2HPcRFG3YcJmkg
JmZQyexJvCQ3wFNxiYUm+y0CgYBXQSMhFnCUg4jWbbDcHlnwRT+LnjHrN2arPE3O
eKLfGL6DotmqmjxFaStaRPv2MXMWgAMUsB8sQzG/WEsSaOBQaloAxJJlFIyhzXyE
bi1UZXhMD8BzQDu1dxLI/IN4wE6SDykumVuocEfuDxlsWDZxEgJjWD2E/iXK9seG
yRa+9wKBgEydVz+C1ECLI/dOWb20UC9nGQ+2dMa+3dsmvFwSJJatQv9NGaDUdxmU
hRVzWgogZ8dZ9oH8IY3U0owNRfO65VGe0sN00sQtMoweEQi0SN0J6FePiVCnl7pf
lvYBaemLrW2YI2B7zk5fTm6ng9BW/B1KfrH9Vm5wLQBchAN8Pjbu
——END RSA PRIVATE KEY——
Держите ключ в секрете! Это значит, защитите его с помощью очень ограниченных разрешений (600) и никому не разглашайте.
Его напарник — публичный ключ — выглядит примерно так:
——BEGIN PUBLIC KEY——
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm+036O2PlUQbKbSSs2ik
6O6TYy6+Zsas5oAk3GioGLl1RW9Ni8kagqdnD69Et29m1vl5OIPsBoW3OWb1aBW5
e3J0x9prXI1W/fpvuP9NmrHBUN4ES17VliRpfVH3aHfPC8rKpv3GvHYOcfOmMN+H
fBZlUeKJKs6c5WmSVdnZB0R4UAWuQ30aHEBVqtrhgHqYDBokVe0/H4wmwZEIQTIN
WniCOFR5UphJf5nP8ljGbmPxNTnfb/iHS/chjcjF7TGMG36e7EBoQijZEUQs5IBC
eVefOnFLK5jLx+BC//X+FNzByDilTt+l28I/3ZN1ujhak73YFbWjjLR2tjtp+LQg
NQIDAQAB
——END PUBLIC KEY——
Запрос на получение сертификата выглядит примерно так:
——BEGIN CERTIFICATE REQUEST——
MIICzjCCAbYCAQAwgYgxFDASBgNVBAMMC2V4YW1wbGUuY29tMQswCQYDVQQLDAJJ
VDEPMA0GA1UECAwGTG9uZG9uMRIwEAYDVQQKDAlBQ01FIEluYy4xIDAeBgkqhkiG
9w0BCQEWEWFkbWluQGV4YW1wbGUuY29tMQswCQYDVQQGEwJHQjEPMA0GA1UEBwwG
TG9uZG9uMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm+036O2PlUQb
KbSSs2ik6O6TYy6+Zsas5oAk3GioGLl1RW9Ni8kagqdnD69Et29m1vl5OIPsBoW3
OWb1aBW5e3J0x9prXI1W/fpvuP9NmrHBUN4ES17VliRpfVH3aHfPC8rKpv3GvHYO
cfOmMN+HfBZlUeKJKs6c5WmSVdnZB0R4UAWuQ30aHEBVqtrhgHqYDBokVe0/H4wm
wZEIQTINWniCOFR5UphJf5nP8ljGbmPxNTnfb/iHS/chjcjF7TGMG36e7EBoQijZ
EUQs5IBCeVefOnFLK5jLx+BC//X+FNzByDilTt+l28I/3ZN1ujhak73YFbWjjLR2
tjtp+LQgNQIDAQABoAAwDQYJKoZIhvcNAQELBQADggEBAGIQVhXfuWdINNfceNPm
CkAGv4yzpx88L34bhO1Dw4PYWnoS2f7ItuQA5zNk9EJhjkwK8gYspK7mPkvHDbFa
Um7lPSWsm3gjd3pU7dIaHxQ+0AW9lOw5ukiBlO4t3qgt+jTVZ3EhMbR0jDSyjTrY
kTgfuqQrGOQSmLb5XviEtCcN0rseWib3fKIl8DM69JiA2AALxyk7DCkS1BqLNChT
pnbgvtlUhc4yFXNCtwPGskXIvLsCn2LRy+qdsPM776kDLgD36hK0Wu14Lpsoa/p+
ZRuwKqTjdaV23o2aUMULyCRuITlghEEkRdJsaXadHXtNd5I5vDJOAAt46PIXcyEZ
aQY=
——END CERTIFICATE REQUEST——
Наконец, подписанный сертификат HTTPS выглядит примерно так:
——BEGIN CERTIFICATE——
MIIDjjCCAnYCCQCJdR6v1+W5RzANBgkqhkiG9w0BAQUFADCBiDEUMBIGA1UEAwwL
ZXhhbXBsZS5jb20xCzAJBgNVBAsMAklUMQ8wDQYDVQQIDAZMb25kb24xEjAQBgNV
BAoMCUFDTUUgSW5jLjEgMB4GCSqGSIb3DQEJARYRYWRtaW5AZXhhbXBsZS5jb20x
CzAJBgNVBAYTAkdCMQ8wDQYDVQQHDAZMb25kb24wHhcNMTYwNDE5MTAzMjI1WhcN
MTcwNDE5MTAzMjI1WjCBiDEUMBIGA1UEAwwLZXhhbXBsZS5jb20xCzAJBgNVBAsM
AklUMQ8wDQYDVQQIDAZMb25kb24xEjAQBgNVBAoMCUFDTUUgSW5jLjEgMB4GCSqG
SIb3DQEJARYRYWRtaW5AZXhhbXBsZS5jb20xCzAJBgNVBAYTAkdCMQ8wDQYDVQQH
DAZMb25kb24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCb7Tfo7Y+V
RBsptJKzaKTo7pNjLr5mxqzmgCTcaKgYuXVFb02LyRqCp2cPr0S3b2bW+Xk4g+wG
hbc5ZvVoFbl7cnTH2mtcjVb9+m+4/02ascFQ3gRLXtWWJGl9Ufdod88Lysqm/ca8
dg5x86Yw34d8FmVR4okqzpzlaZJV2dkHRHhQBa5DfRocQFWq2uGAepgMGiRV7T8f
jCbBkQhBMg1aeII4VHlSmEl/mc/yWMZuY/E1Od9v+IdL9yGNyMXtMYwbfp7sQGhC
KNkRRCzkgEJ5V586cUsrmMvH4EL/9f4U3MHIOKVO36Xbwj/dk3W6OFqTvdgVtaOM
tHa2O2n4tCA1AgMBAAEwDQYJKoZIhvcNAQEFBQADggEBABwwkE7wX5gmZMRYugSS
7peSx83Oac1ikLnUDMMOU8WmqxaLTTZQeuoq5W23xWQWgcTtfjP9vfV50jFzXwat
5Ch3OQUS53d06hX5EiVrmTyDgybPVlfbq5147MBEC0ePGxG6uV+Ed+oUYX4OM/bB
XiFa4z7eamG+Md2d/A1cB54R3LH6vECLuyJrF0+sCGJJAGumJGhjcOdpvUVt5gvD
FIgT9B04VJnaBatEgWbn9x50EP4j41PNFGx/A0CCLgbTs8kZCdhE4QFMxU9T+T9t
rXgaspIi7RA4xkSE7x7B8NbvSlgP79/qUe80Z7d8Oolva6dTZduByr0CejdfhLhi
mNU=
——END CERTIFICATE——
Все части связаны и должны соответствовать друг другу. Последний сертификат был сгенерирован только ради примера — это так называемый самоподписанный сертификат, потому что он не подписан признанным центром сертификации.
Мы проиллюстрируем этот процесс реальными шагами, которые нужно сделать в cPanel, Linux, FreeBSD и Windows. Это универсальный процесс, подходящий для всех типов сертификатов. Если вы хотите получить бесплатный сертификат DV, то следуйте другим процедурам, описанным в разделах Let’s Encrypt и Cloudflare.
Шаг 1. Создать секретный ключ и запрос на получение сертификата
В следующих примерах мы будем использовать 2048-битные сертификаты RSA, по причине их большей совместимости. Если ваш провайдер, у которого установлен сервер, поддерживает ECC (например, если вы не пользуетесь услугами Heroku или AWS), то можете предпочесть использовать ECC.
cPanel
Раздел “Security” в cPanel (см. большую версию)
Управление секретным ключом (“Private Key”) в cPanel (см. большую версию)
Подтверждение секретного ключа в cPanel (см. большую версию)
Раздел “Private Keys” в cPanel с новым сгенерированным ключом (см. большую версию)
Раздел “SSL/TLS Manager” в cPanel (см. большую версию)
Форма “Create New Certificate Signing Request” в cPanel (см. большую версию)
Подтверждение создания CSR в cPanel (см. большую версию)
Раздел “Certificate Signing Request” в cPanel с новым сгенерированным CSR (см. большую версию)
Linux, FreeBSD
Убедитесь, что установлен OpenSSL. Вы можете проверить это:
Если нет, то откройте консоль и установите его для своей платформы:
Секретный ключ будет сгенерирован, а вам нужно ответить на несколько вопросов для CSR:
Generating a 2048 bit RSA private key
. +++
. +++
writing new private key to ‘example.com.key’
——
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
Правильно ответьте на все вопросы (они будут открыты для просмотра в вашем подписанном сертификате!), особенное внимание уделите разделу “Common Name” (например, сервер FQDN или ВАШЕ имя), который должен в точности совпадать с доменным именем, для которого вы запрашиваете сертификат HTTPS. Включите туда только домен верхнего уровня ( example.com ); центр сертификации обычно сам добавляет поддомен www (то есть www.example.com ):
Country Name (2 letter code) [AU]:GB
State or Province Name (full name) [Some-State]:London
Locality Name (eg, city) []:London
Organization Name (eg, company) [Internet Widgits Pty Ltd]:ACME Inc.
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:admin@example.com
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Internet Information Server под Windows
Откройте “Internet Information Services (IIS) Manager”. Двойным щелчком откройте “Server Certificates”. (см. большую версию)
Нажмите “Create Certificate Request” в правой колонке. (см. большую версию)
Введите информацию о своей организации. (см. большую версию)
Выберите место для сохранения сгенерированного CSR и нажмите “Finish”. (см. большую версию)
Шаг 2. Приобретение сертификата HTTPS
Получение сертификата HTTPS
У вашего хостинг-провайдера или регистратора HTTPS может быть другая процедура регистрации, но общая логика одинакова.
Самоподписанные сертификаты
Существует возможность самому подписать сертификат, а не отдавать это право центру сертификации. Это хорошо для целей тестирования, потому что с криптографической точки зрения самоподписанный сертификат не отличается от любого другого, но браузеры не станут ему доверять, а начнут показывать предупреждение безопасности — вы можете выдавать себя за кого угодно, но это не проверено доверенной третьей стороной. Если пользователь доверяет веб-сайту, он может добавить исключение в свой браузер, который сохранит сертификат и будет доверять сайту при будущих визитах.
Можно создать самоподписанный сертификат на любой платформе, где есть OpenSSL.
Как только сертификат сгенерирован, вам нужно установить его на свой сервер. Если у вас хостинг и сервис регистрации HTTPS от одного провайдера (многие хостинг-провайдеры также продают сертификаты HTTPS), то может действовать автоматическая процедура установки и активации вашего нового сертификата HTTPS для веб-сайта. Если вы хоститесь где-то в другом месте, то нужно скачать сертификат и сконфигурировать сервер для его использования.
Шаг 3. Установка сертификата HTTPS для своего веб-сайта
cPanel
Раздел “SSL/TLS Manager” в cPanel (см. большую версию)
Импорт нового сертификата HTTPS в cPanel (см. большую версию)
Просмотр содержимого и подтверждение сертификата HTTPS в cPanel (см. большую версию)
Подтверждение сертификата HTTPS в cPanel (см. большую версию)
Страница “Certificates” в cPanel с новым сертификатом HTTPS. (см. большую версию)
Раздел “SSL/TLS Manager” в cPanel. (см. большую версию)
Форма “Install an SSL Website” в cPanel. (см. большую версию)
Linux, FreeBSD
Разместите в соответствующих директориях сгенерированный секретный ключ ( example.com.key ), запрос на подпись сертификата ( example.com.csr ) и действительный сертификат HTTPS ( example.com.crt ):
Apache
Чтобы активировать HTTPS на своём сайте, нужно сделать следующее:
Если mod_ssl установлен, то вы получите такой ответ…
ssl_module (shared)
Syntax OK
Если он не установлен или не работает, то попробуйте это:
Эта конфигурация была сгенерирована с помощью упомянутого ранее Mozilla SSL Configuration Generator. С его помощью проверьте актуальность конфигурации. Отредактируйте правильные пути для сертификата и секретного ключа. Показанная здесь конфигурация сгенерирована с промежуточными настройками — прочитайте об ограничениях и конфигурациях браузера для каждой настройки, прежде чем выбрать наиболее подходящую для себя.
В коде были сделаны некоторые изменения, чтобы обрабатывать редиректы с HTTP на HTTPS, а также с не- www на домен с www (полезно для задач SEO).
Nginx
Отредактируйте файл конфигурации nginx ( nginx.conf ):
Эта конфигурация была сгенерирована с помощью упомянутого ранее Mozilla SSL Configuration Generator. С его помощью проверьте актуальность конфигурации. Отредактируйте правильные пути для сертификата и секретного ключа. Показанная здесь конфигурация сгенерирована с промежуточными настройками — прочитайте об ограничениях и конфигурациях браузера для каждой настройки, прежде чем выбрать наиболее подходящую для себя.
Генератор автоматически генерирует код для обработки редиректов с HTTP на HTTPS и изначально активирует поддержку HTTP/2!
Internet Information Server под Windows
Откройте “Internet Information Services (IIS) Manager”. Двойным щелчком откройте “Server Certificates”. (см. большую версию)
Нажмите “Complete Certificate Request” в правой колонке. (см. большую версию)
Выберите файл подписанного сертификата. (см. большую версию)
Вы должны увидеть сертификат на вкладке “Server Certificates”. (см. большую версию)
Выберите веб-сайт и нажмите “Bindings”. (см. большую версию)
Нажмите кнопку “Add”. (см. большую версию)
Выберите “HTTPS” и укажите установленный сертификат HTTPS. (см. большую версию)
Теперь для вашего веб-сайта должны быть установлены HTTP и HTTPS. (см. большую версию)
Предупреждения о смешанном содержимом
Эти советы помогут устранить предупреждения о смешанном содержимом, а ваш браузер должен показывать закрытый замок без восклицательного знака.
Тестирование сервера
После того, как ваш сервер сконфигурирован и начал работать по HTTPS, я настоятельно рекомендую проверить безопасность конфигурации при помощи Qualys SSL Server Test. Он сканирует ваш веб-сайт, в том числе выполняет всестороннюю оценку конфигурации, выявляет возможные слабости и даёт рекомендации. Следуйте его советам для ещё большего улучшения конфигурации защиты сервера.
Продление
Ваш сертификат действителен в течение определённого периода времени — обычно это год. Не дожидайтесь последнего момента для его продления — ваш регистратор начнёт присылать вам электронные письма, когда станет приближаться срок для обноления. Выпустите новый сертификат как только получите первое уведомление. Процедура примерно такая же: создать запрос на подпись сертификата, получить новый сертификат HTTPS и установить его на сервер. Срок действия сертификата начинается с момента его подписи, в то время как срок окончания его действия будет установлен через год после окончания действия предыдущего сертификата. Поэтому будет определённый промежуток времени, когда оба сертификата действительны, а затем полный год после окончания срока действия старого сертификата. В течение этого перекрытия у вас есть возможность убедиться, что новый сертификат нормально работает, прежде чем срок действия старого истечёт, что гарантирует бесперебойную работу вашего веб-сайта.
Отзыв
Если ваш сервер скомпрометирован или вы думаете, что кто-то мог получить доступ к вашему секретному ключу, вам следует немедленно аннулировать текущий сертификат HTTPS. У разных регистраторов разные процедуры, но в целом всё сводится к пометке скомпрометированного сертификата как неактивного в специальной базе данных вашего регистратора, а затем выдачи нового сертификата HTTPS. Конечно, отзывайте текущий сертификат как можно раньше, чтобы никто не мог выдать себя за вас, и устанавливайте новый сертификат только после того, как выясните и исправите причину возникновения бреши в безопасности. Можете попросить помощи у своего регистратора.
Let’s Encrypt
Let’s Encrypt — это бесплатный, автоматизированный и открытый центр сертификации (CA), который работает для общественного блага. Сервис Let’s Encrypt предоставляется Internet Security Research Group (ISRG).
Ключевые принципы Let’s Encrypt:
Чтобы воспользоваться преимуществами Let’s Encrypt, нужно правильно настроить свой аккаунт на хостинге или сервере. Let’s Encrypt выдаёт краткосрочные сертификаты, которые следует регулярно обновлять, чтобы веб-сайт HTTPS оставался работоспособным.
Как это работает
Есть некоторые существенные отличия в работе Let’s Encrypt и других центров сертификации. В соответствии с тремя первыми пунктами, перечисленными выше, вот эти отличия:
Ограничения
Let’s Encrypt выдаёт только сертификаты DV. Сертификаты OV и EV не поддерживаются, и в данный момент нет планов их поддержки. Выдаются сертификаты на один или несколько доменов, но в данный момент нет сертификатов с поддоменами (подстановочными знаками). Для получения дополнительной информации см. Let’s Encrypt FAQ.
Автоматический режим работы Let’s Encrypt навязывает некоторые ограничения на использование, чтобы защитить инфраструктуру от умышленных и неумышленных злоупотреблений. Лимиты на интенсивность использования достаточно высоки, чтобы помешать обычным пользователям даже с сотнями доменов в распоряжении. Но если вы управляете сертификатами HTTPS в очень больших масштабах, то стоит ознакомиться с этими лимитами.
Более старые и экзотические клиенты (до Windows XP SP3) не поддерживаются. Подробности см. на странице совместимости.
Использование сертификатов HTTPS от Let’s Encrypt на практике
cPanel
Раздел “Security” в cPanel. (см. большую версию)
Проверьте оба доменных имени и нажмите “Issue Multiple”. (см. большую версию)
Нажмите “Issue” и подождите минуту или две. (см. большую версию)
Если процесс завершён удачно, вы увидите сообщение с подтверждением. (см. большую версию)
Ваши домены с сертификатами Let’s Encrypt. (см. большую версию)
Linux, FreeBSD, другие
Самый простой способ установить сертификат Let’s Encrypt на своём сервере — использовать Certbot. Просто укажите свой веб-сайт и операционную систему — и следуйте инструкциям.
Certbot для Let’s Encrypt (см. большую версию)
Internet Information Server под Windows
В данный момент нет официального клиента для IIS под Windows, но существует пара обходных путей.
Несколько проектов ставят целью создание нативного Windows-клиента для Let’s Encrypt:
Cloudflare
Cloudflare — сервис, который предоставляет сеть доставки контента (CDN), услуги обеспечения безопасности для веб-сайтов и защиты от DDoS-атак. Он предоставляет бесплатные сертификаты HTTPS на всех тарифных планах, включая бесплатный тариф — это коллективный сертификат DV Cloudflare Universal SSL. Чтобы получить уникальный сертификат HTTPS, нужно перейти на бизнес-тариф.
Для получения сертификата просто создайте аккаунт, поднимите веб-сайт и зайдите в раздел “Crypto”.
CertSimple
CertSimple поставляет только сертификаты EV. Он совершил такую же революцию на рынке сертификатов EV HTTPS, какую Let’s Encrypt совершил на рынке сертификатов DV HTTPS, обеспечивая более быстрый и простой процесс проверки организации, который обычно медленный и обременительный. Вот его преимущества:
Несколько веб-сайтов HTTPS на одном IP-адресе
Из-за сути процесса рукопожатия виртуальные хосты на одном IP-адресе представляют собой проблему для TLS. Виртуальные хосты работоспособны благодаря тому, что клиент включает доменное имя в заголовок запроса HTTP, но при использовании HTTPS рукопожатие TLS происходит до того, как отправляются первые запросы HTTP — нужно установить и наладить работу безопасного канала, прежде чем отправлять какой-либо открытый текст по HTTP, в том числе заголовки. Так что перед соединением с клиентом сервер не знает, какой сертификат предъявить, поэтому он показывает первый сертификат из своего файла конфигурации. И конечно, этот сертификат действителен только для первого сайта TLS из списка.
Есть несколько способов обойти проблему: либо получить уникальные IP-адреса для каждого домена с TLS, либо зарегистрировать все домены на один сертификат. Оба способа не слишком хороши на практике — адресное пространство IPv4 уже исчерпано, а регистрация всех сайтов на один большой сертификат HTTPS означает, что при добавлении нового сайта на сервер вам придётся перевыпускать весь сертификат на многочисленные домены.
Для устранения этого ограничения было разработано расширение к протоколу TLS под названием Server Name Indication (SNI). Его должны поддерживать и сервер, и клиент. И хотя поддержка SNI сегодня широко распространена, она всё-таки не гарантирована на 100%, если для вас важна гарантия совместимости со всеми возможными клиентами.
Подробности о запуске SNI под Apache, nginx и IIS (8+) см. в соответствующей документации.











