HTTPS и сертификаты - PullRequest
       13

HTTPS и сертификаты

4 голосов
/ 09 апреля 2011

Как HTTPS работает при получении сертификата?

Ответы [ 2 ]

8 голосов
/ 09 апреля 2011

Очень гадко с небольшой историей :

Клиент : (подключается к серверу и высовывает его руку)"Здравствуйте! Вот мои данные шифрования."

Сервер : (берет руку клиента) «Здравствуйте. Вот мои данные шифрования. Вот мой сертификат».(Рукопожатие согласовано. Клиент проверяет сертификат)

Клиент : Отлично, вот мой ключ!Таким образом, теперь все шифруется с помощью этого ключа.ОК?

Сервер : ОК!(SSL Handshake завершено)

Клиент : Отлично, вот мои данные по HTTP !!

Сертификаты используются в SSL рукопожатие .Сертификат, который сервер передает клиенту, подписан Центром сертификации (CA), таким как VeriSign, и специфичен для сервера.Существуют различные проверки, которые происходят в рукопожатии SSL.Один из важных моментов, о которых следует знать, - это атрибут Common Name сертификата, который должен совпадать с именем хоста / DNS-сервера.

У клиента есть копия CA открытый сертификат (ключ) и, таким образом, может использовать его (например, рассчитать с помощью SHA1), чтобы проверить, все ли в порядке сертификат сервера.

4 голосов
/ 09 апреля 2011

Прежде всего нам необходимо различать сертификаты на стороне сервера и на стороне клиента.

В большинстве случаев используется только серверный сертификат. Он используется, чтобы позволить клиенту проверять подлинность сервера, к которому он подключен, путем проверки сертификата сервера (процедура проверки будет описана ниже). Это должно предотвратить атаку «человек посередине» (MITM).

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

Далее, о самой проверке.

При проверке сертификата сервера на клиенте клиент предпринимает следующие шаги:

  1. Найти сертификат эмитента (ЦС) и проверить подпись сертификата сервера, используя сертификат эмитента (технические данные пропущены).
  2. Проверка срока действия сертификата (с момента, когда и когда сертификат должен быть принят).
  3. Проверка использования сертификата по назначению (каждый сертификат может быть ограничен только некоторыми целями).
  4. Убедитесь, что сертификат выдан для доменного имени (или IP-адреса), на котором расположен сервер.
  5. Убедитесь, что ЦС не отменил (отозвал) сертификат. Это делается путем проверки списков отзыва сертификатов (CRL) и отправки запроса на лету с использованием протокола OCSP.
  6. Поскольку CRL и ответы OCSP подписываются с использованием сертификатов, их подписи также проверяются, как описано выше.
  7. Процедура повторяется для сертификата CA, упомянутого в шаге (1), и продолжается до тех пор, пока вы не получите сертификат доверенного корневого CA (предполагается, что у клиента есть набор доверенных корневых сертификатов).

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

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