Протокол http что это

Протокол http что это

Протокол http что это? Основной протокол для страниц в интернете — HTTP. Используется этот протокол каждый раз, когда вы заходите на новый сайт, когда на сайте отображается текст, картинка, когда вы нажимаете ссылки. Весь интернет основывается на HTTP, пусть большая часть пользователей даже и не подозревают, насколько популярен в их привычной жизни HTTP.

HTTP — протокол, по которому передается гипертекст (HyperText Transfer Protocol). Читайте еще: Как положить деньги на Яндекс.Деньги.

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

В Интернете можно пользоваться множеством протоколов, HTTP — лишь один многих, у которого собственные задачи с целями.

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

Независимо от названия браузера, к адресной строке всегда по умолчанию добавляется название протокола: «http://». Вы можете и не видеть эту надпись, если браузер ее скрывает. Но стоит только скопировать название сайта, вместе с ним в нужном месте вставится и протокол HTTP.

Зачем создали протокол HTTP

Зачем создали протокол HTTP

С его помощью передают гипертекстовые документы, а проще говоря — страницы на нужных нам сайтах.

Принимает веб-страницы клиент (браузер), а отдаёт страницы сервер. Эта технология так и называется — клиент-серверная технология.

Благодаря HTTP стало возможно передавать веб-страницы в интернете. А что же содержится в самих страницах, которые пересылает нам сервер? Обыкновенный HTML-код, который поступает в браузер, которому остается только верно интерпретировать полученную информацию и показать вам готовый сайт.

Что такое HTTP и как он работает?

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

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

А теперь попробуем разобраться в общих чертах, как работает этот механизм. Для начала необходимо выяснить, что же такое HTTP. Это протокол, который служит для «транспортировки» информации между клиентским приложением и сервером.

Аббревиатура HTTP (HyperText Transfer Protocol) переводится с английского как «протокол передачи гипертекста». Вообще говоря, протоколов достаточно много, и каждый из них решает определенную задачу (например, тот же FTP).

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

Необходимо отметить, что передача данных по HTTP происходит посредством TCP/IP-соединения. При этом серверное приложение по умолчанию использует порт 80, хотя в некоторых случаях может применяться и другой.

TCP (Transmission Control Protocol)/IP является довольно сложной системой и включает в себя четыре уровня протоколов (прикладной, к которому и относится HTTP, транспортный, сетевой и канальный). Думаю, для общей информации этого пока достаточно, а то мы залезем в дебри.

Криптография: короткое интро

Конфиденциальность, гарантия целостности и идентификация — ключевые концепты криптографии, а не фича HTTPS. Рассмотрим их.

Конфиденциальность

Конфиденциальность — основа приватности. Именно она гарантирует, что информацию не получат третьи лица. Обычно для этого информацию обрабатывают таким образом, что она по понятной (так называемой plaintext) становится непонятной (шифротекст, ciphertext). Этот процесс называется шифрованием (encryption). Обратный процесс — расшифровкой (decryption). Делать это можно по-разному, и для этого создано много алгоритмов шифрования.

И если две стороны хотят общаться с шифрованием, они должны согласовать два аспекта:

  • Алгоритм шифрования.
  • С какими параметрами, паролем или правилами (секретом) происходит шифрования.

Существует два вида алгоритмов шифрования:

  1. Симметричный — обе стороны используют один и тот же ключ.
  2. Асимметричный — каждая из сторон имеет пару ключей: публичный и частный

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

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

Как это работает? Представим, что Алиса и Боб хотят обмениваться какой-либо информацией конфиденциально. Каждый из них имеет пару ключей: частный и публичный. Частные ключи известны только их владельцам, публичные доступны любому.

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

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

Возникает вопрос: когда использовать симметричное шифрование, а когда асимметричное? Асимметричное шифрование используется для обмена ключом для дальнейшего общения. В реальной жизни нам не нужно использовать двунаправленный (от Алисы к Бобу и от Боба к Алисе) асимметричное шифрование.

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

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

Первая асимметричная часть рукопожатие (handshake) называется обменом ключами (key exchange).

Целостность

Одной из проблем, которые решает HTTPS является целостность данных:

Были успешно получены все данные?

Не были ли изменены данные (третьей стороной) в процессе обмена?

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

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

Идентификация

Как по идентификации? Проблемой приложений с инфраструктурой публичных ключей является то, что обе стороны не могут точно знать кто есть кто, ведь они физически разделены. Для того, чтобы убедиться кем действительно есть другая сторона, существует взаимно доверенное третья сторона — certificate authority (CA).

CA выдает сертификаты, подтверждающие, что домен example.com ассоциированный с публичным ключом XXX. В некоторых случаях (сертификаты EV и OV) CA также проверяет принадлежит домен определенной компании. Правдивость этой информации гарантируется (то есть она сертифицирована) certificate authority X, и эта гарантия действительна не ранее даты Y (begins on) и не позднее даты Z (expires on).

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

CA — это организации, которым доверено подписывать сертификаты. Операционные системы как Windows, macOS, iOS и Android имеют собственный список доверенных сертификатов. Также его имеет Firefox.

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

Вы можете сами добавить CA в список доверенных, это очень удобно при работе с самопидписанымы сертификатами (о них мы поговорим позже).

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

Типы HTTPS сертификатов

Типы HTTPS сертификатов

Есть несколько типов сертификатов, но все можно разделить по категориям.

Валидация сервера- Domain validated (DV)

Самый популярный тип сертификата, он подтверждает, что домен и публичный ключи не подменен. Браузер устанавливает безопасное соединение с сервером и отображает панель с замочком. Кликнув по ней вы увидите надпись «Этот сайт не предоставил информации о владельце», ведь для получения этого сертификата достаточно лишь обладать доменом. DV сертификаты обычно достаточно дешевые (10 USD в год) или вообще бесплатные (см. Let’s Encrypt и Cloudflare ниже).

Extended validation (EV)

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

  • владения доменом
  • в государственном реестре: действительно существует такая компания, или
  • активная она
  • в независимых бизнес реестрах (Dunn and Bradstreet, Salesforce connect.data.com, Yellow Pages и т.д.)
  • верификационный телефонный звонок
  • инспекция всех доменных имен в сертификате

Теперь рядом с замочком отображаться название компании, владеющей доменом, клик по которой покажет детали о компании, например, ее название и адрес. Стоят такие сертификаты от 150 до 300 USD в год.

Organization validated (OV)

Эти сертификаты похожи на EV, они гарантируют, что домен принадлежит организации, но ее название не отображается перед URL. То есть вам нужно соблюсти все правила как и для EV-сертификата, но без его плюсов. Поэтому этот сертификат наименее популярен. Стоит от 40 до 100 USD в год.

Количество доменов

Ранее, сертификаты выдавались только для одного домена в CN-поле. Позже было добавлено поле «subject alternative name» (SAN), теперь один сертификат мог работать для нескольких доменов. Сейчас все сертификаты выпускаются по одинаковой технологии, поэтому даже сертификат для одного домена будет поле SAN с этим самым доменом (и его www-версией). Но некоторые компании все еще отдельно продают сертификаты для одного и нескольких доменов.

Один домен

Самый популярный вид сертификата, который покрывает только один домен: example.com и www.example.com

Несколько доменов (UCC / SAN)

Такие типы сертификатов еще называют Unified Communications Certificate (UCC) или Subject Alternative Names (SAN), они могут покрывать сразу несколько доменов (или поддоменов) до определенного лимита. Обычно в цену включена оплата трех-пяти доменов, а остальные можно добавить за дополнительную цену.

Wildcard

Этот тип сертификата покрывает главный домен и все поддомены (* .example.com). Но его ограничением является то, что он покрывает только поддомены основного домена.

Конфигурация

Вспомним, что для обеспечения HTTPS-шифрование нужно:

  • Обменяться ключом. Здесь используются асимметричные алгоритмы шифрования.
  • Идентификация стороны с помощью HTTPS-сертификата, выдала CA. Используются асимметричные алгоритмы шифрования.
  • Шифрования сообщения. Здесь используются симметричные алгоритмы шифрования.
  • Подпись сообщения с помощью алгоритмов хеширования.

Каждый из этих пунктов имеет свой набор возможных алгоритмов (некоторые из них уже устарели), которые используют ключи разной длины. Частью handshake является согласование между клиентом и сервером, какие алгоритмы будут использованы.

Например, передача ECDHE-RSA-AES256-GCM-SHA384 свидетельствует, что обмен ключом состоится по протоколу Диффи-Хеллмана на эллиптических кривых (Elliptic Curve Diffie-Hellman Ephemeral, ECDHE), сертификат был подписан CA с помощью алгоритма RSA, симметричное шифрование будет происходить по помощью алгоритма AES с длиной ключа в 256 бит с GCM, а целостность сообщения гарантируется алгоритмом SHA-2 с длиной дайджеста в 384 бита.

И поэтому вам нужно будет сделать несколько решений в конфигурации.

Коды

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

Список комбинаций, поддерживаемых OpenSSL, устроен таким образом, что самая надежная комбинация расположена сверху, а слабая — снизу. Это имеет смысл, ведь выбор комбинации происходит перебором этого списка, пока не найдется комбинация, которая поддерживается и сервером и браузером. Поэтому лучше сначала попробовать более защищены способы.

На Википедии есть сравнительный список алгоритмов и их поддержка различными версиями SSL и TLS.

Очень удобным ресурсом, который поможет настроить HTTPS на сервере есть Mozilla SSL Configuration Generator, позже в этой статье мы воспользуемся им.

Тип ключа

Сертификаты с использованием эллиптической криптографии быстрее и меньше нагружают CPU, чем RSA-сертификаты, играет важную роль на мобильных устройствах. Но некоторые сервисы (на момент написания, 12 июля 2017 года, среди них были Amazon, CloudFront и Heroku) не поддерживают такие сертификаты. 256-битный ECC ключ признано достаточным.

RSA-сертификаты медленнее, но их поддерживает куда больше старых серверов. RSA-ключи большие, поэтому 2048-битный RSA-ключ признано минимальным. RSA-сертификаты, подписанные 4096-битным ключом могут вызвать проблемы с быстродействием, поэтому обычно используют 2048-битные, жертвуя потенциальной безопасностью.

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

Процедура получения сертификата

Процедура получения сертификата

Чтобы получить HTTPS-сертификат нужно выполнить следующее:

  • Создайте пару из частного и публичного ключа и подготовьте запрос на подписание сертификата (Certificate Signing Request, CSR), включая информацию об организации и публичный ключ.
  • Обратитесь к CA и сделайте запрос на получение HTTPS-сертификата, основанный на вашем CSR.
  • Получите подписанный сертификат и установите на своем веб-сервере.

Существует определенный набор файлов, хранящих различные элементы инфраструктуры публичных ключей (public key infrastructure, PKI): частный и публичный ключи, CSR и подписан HTTPS-сертификат. И чтобы все это усложнить, различные стороны используют различные имена и расширения файлов для одних и тех же вещей.

Для начала, существует два формата хранения информации — DER и PEM. Первый является бинарным форматом, а другой это base64-encoded (текстовый) DER-файл. По умолчанию Windows использует DER-формат направления, в то время как мир open-source (Linux, UNIX) используют PEM. Конечно, существуют инструменты для конвертирования между этими двумя форматами.

Файлы, которые мы будем использовать в примерах:

example.com.key — это PEM-форматированный файл сохраняет частный ключ. Расширение .key не является обязательным, поэтому может и не использоваться. Он должен быть защищенным и доступным только суперпользователя.

example.com.pub — это PEM-форматированный файл сохраняет публичный ключ. Вы даже не нуждаетесь этого файла, ведь вы всегда можете сгенерировать его из частного ключа, как обычно и делают. Но для ясности примеров мы будем его использовать.

example.com.csr — это запрос на подписание запроса. PEM-форматированный файл, хранящий информацию об организации и публичный ключ сервера. Отправляется CA для получения сертификата.

example.com.crt — это PEM-форматированный файл, и нашей сертификатом, который подписан CA. В нем хранится публичный ключ сервера, информация об организации, подпись CA и дату окончания. Расширение .crt не является стандартом, иногда еще используют .cert и .cer.

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

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

Процесс настройки HTTPS будет показано для cPanel, Linux, FreeBSD и Windows. Это процесс универсальный для всех видов сертификата. Если вы хотите получить бесплатный DV-сертификат, вам нужно выполнить несколько иные шаги, описанные в секциях Let’s Encrypt и Cloudflare.

Шаг первый: создание частного ключа и запроса на подписание сертификата (CSR)

создание частного ключа и запроса на подписание сертификата (CSR)

Мы будем использовать 2048-битный RSA-сертификат, но если ваш сервер-провайдер поддерживает ECC, я рекомендую использовать его.

cPanel

  • Войдите в вашу cPanel
  • Проскрольте в секцию «Security» и кликните на «SSL / TLS».
  • Кликните по «Private Keys (KEY)», чтобы создать новый частный ключ.
  • Выставьте параметр «Key Size» в «2048-bit» и нажмите «Generate»
  • Будет сгенерирован новый частный ключ и вы увидите подтверждение.
  • Если вы вернетесь на страницу «Private Keys», то увидите этот ключ в списке.
  • Вернитесь к странице «SSL / TLS Manager» и кликните по «Certificate Signing Requests (CSR)», чтобы создать CSR.
  • Теперь выберите ключ, мы только что сгенерировали в соответствующем поле. Заполняйте все поля правильно, ведь эта информация будет видно публично в вашем сертификате. Обратите особое внимание на секцию «Domains», имя домена должно точно совпадать. Когда закончите, нажмите кнопку «Generate».
  • Новый CSR будет создан, вы увидите подтверждение.
  • Новый CSR будет создан, вы увидите подтверждение.

Internet Infromation Server (IIS)

  • Откройте «Start» → «Administrative Tools» → «Internet Information Services (IIS) Manager». Кликните по имени сервера. Сделайте двойной клик по «Server Certificates».
  • Кликните по «Create Certificate Request» в правой колонке.
  • Внимательно заполняйте поля, особенно «Common Name», где должно быть указано имя домена. Нажмите «Next».
  • «Cryptographic Service Provider» оставьте как есть, а «Bit length» установите в 2048. Нажмите «Next».
  • Выберите куда сохранить готовый CSR и нажмите «Finish».

Шаг второй: получение HTTPS-сертификата

Чтобы получить HTTPS-сертификат, прежде всего, за него нужно заплатить сертификат-провайдера. После этого вам нужно будет прислать ваш CSR, а если вам нужен EV или OV-сертификат, то нужно будет еще приложить дополнительные документы. Регистратор проверит ваш запрос (и дополнительные документы, если есть) и выдаст вам HTTPS-сертификат.

Общая инструкция

Эта процедура может отличаться от одного регистратора к другому, но в общем покупка HTTPS-сертификата выглядит так:

  1. Найдите продавца сертификатов.
  2. Выберите тип сертификата ((DV, OV, EV, single site, multisite, wildcard) и добавьте в корзину. Выберите удобный метод и оплатите покупку.
  3. Включите ваш сертификат, загрузите или скопируйте ваш CSR.
  4. Вас спросят о способе проверки владения доменом (Domain Control Validation, DCV) — через электронную почту, загрузкой HTML-файла или добавлением TXT-записи в вашей доменной зоны. Выбирайте который вам удобнее.
  5. Подождите несколько минут пока проходит валидация и выдается HTTPS-сертификат. Скачайте его.

Самоподписанные сертификаты

Также сертификат можно подписать самому, без помощи CA. Он будет так же криптографически надежным по сертификат от CA, с этой лишь разницей, что браузеры не будут ему доверять. Но это очень полезно для тестирования.

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

Шаг третий: установка сертификата

cPanel

  1. Вернитесь на страницу «SSL / TLS Manager». Кликните по «Certificates (CRT)», чтобы импортировать новый сертификат.
  2. Вы будете перемещены на страницу «Paste, Upload or Generate». Загрузите или скопируйте контент файла полученный на прошлом шаге.
  3. Когда вы загрузите сертификат, его содержание будет распознано и данные появятся в соответствующих полях. Нажмите кнопку «Save Certificate».
  4. Сертификат будет сохранен, а вы получите сообщение с подтверждением.
  5. Если вы вернетесь на страницу «Certificates (CRT)», то увидите наш сертификат.
  6. Вернитесь на страницу «SSL / TLS Manager» и кликните по «Install and Manage SSL for your website (HTTPS)», чтобы присвоить новый сертификат существующем веб-сайту.
  7. Теперь необходимо заполнить форму «Install an SSL Website». Кликните по «Browse Certificates» и выберите наш сертификат. Выберите нужный домен с выпадающего списка и проверьте заполненные поля «Certificate» и «Private Key».
  8. Теперь следует проверить все ли хорошо работает: перейдите по адресу https://www.example.com. Если все работает, то вы, наверное, захотите перенаправлять пользователей с HTTP на HTTPS-версию.

Internet Infromation Server (IIS)

  1. Откройте «Start» → «Administrative Tools» → «Internet Information Services (IIS) Manager». Кликните по имени сервера. Сделайте двойной клик по «Server Certificates».
  2. Кликните по «Complete Certificate Request» в правой колонке.
  3. Выберите полученный от CA файл сертификата. Придумайте для него понятное имя («Friendly name»), чтобы понять что это за сертификат в будущем. Переместите новый сертификат в персональное хранилище (IIS 8 +), кликните «ОК».
  4. Если все сделали хорошо, вы увидите сертификат в «Server Certificates».
  5. «Раскройте» имя сервера. В сайтах выберите тот, которому нужно присвоить сертификат. Кликните по «Bindings» в правой колонке.Здесь нажмите кнопку «Add».
  • В этом окне заполните поля следующим образом:
  • Type: https
  • IP address: All Unassigned
  • Port: 443
  • SSL Certificate: «friendly name» вашего сертификата.
  • Кликните «ОК».

Теперь ваш сайт работает как через HTTP, так и через HTTPS.

Предупреждение о смешанном контенте http- https

Предупреждение о смешанном контенте http- https

Вы можете получить предупреждение от браузера, контент этой страницы не защищены. Это не значит, что вы установили что-то неправильно, просто скорее всего где-то в коде страницы есть элементы (например, изображения), которые загружаются через HTTP. Адреса всех ресурсов должны быть указаны относительно главной директории (/images/image.png, /styles/style.css), относительно текущего документа (../images/image.png) или с полным URL, в начале которого стоит https: / / (<script src = «https://code.jquery.com/jquery-3.1.0.min.js»> </ script>).

Протестируйте ваш сервер

После всех настроек следует проверить ваш сайт и насколько он безопасен. Qualys SSL Server Test поможет вам в этом, он проверит правильность конфигурации, возможные проблемы, а также даст советы по улучшению безопасности вашего сайта.

Продление срока действия сертификата

Ваш сертификат действует не вечно, а только определенный период. Обычно, это год. Не ждите последнего момента чтобы продолжить сертификат, ваш регистратор посылать вам напоминание как только приблизится дата конца его действия. Я рекомендую оформить новый сертификат при первом таком напоминанию.

Эта процедура мало отличается от получения нового сертификата: создание CSR, получение сертификата и его установки. К тому же, сертификат будет валидным сразу после подписания, и до даты прекращения действия прошлого сертификата + один год. То есть, будет время, когда оба сертификата будут работать, а в вас будет время, чтобы проверить работу нового сертификата без заминок в работе вашего сайта. Читайте еще: Как заработать деньги дома.

Аннулирование

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

Закажите продвижение сайта через форму и получите скидку 20%:









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

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