Понимание SSL для использования .Net webservice от Android - PullRequest
1 голос
/ 26 августа 2011

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

Примечание : сервер использует IP-адрес , а НЕ доменное имя. Это приложение для внутренней сети.

До сих пор я создал сертификат (называемый самоподписанным?) На веб-сервере из IIS 7. Чтобы использовать его из приложения Android, я нашел два способа сделать это:

1). Внедрил сертификат в приложение (Какой сертификат? Как его получить?)

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

СЕРТИФИКАТЫ:

Сколько типов сертификатов в рукопожатии и что они?

Имеет ли самоподписанный сертификат корневой сертификат? Если да, как я могу их получить?

Можно ли переместить / скопировать самозаверяющий сертификат с одного сервера на другой?

HANDSHAKE:

Прежде всего, правильно ли этот процесс?

Процесс рукопожатия SSL (скопированный с веб-сайта) описан ниже:

  1. Клиент инициирует процесс рукопожатия SSL, отправив URL начиная со следующего: https: // к серверу.

  2. Клиент изначально отправляет веб-серверу список каждого шифрования алгоритм, который он поддерживает. Алгоритмы, поддерживаемые SSL, включают RC4 и Стандарт Шифрования Данных (DES). Клиент также отправляет сервер его случайная строка вызова, которая будет использоваться позже в процесс.

    Будет ли здесь отправлен встроенный сертификат?

  3. Далее веб-сервер выполняет следующие задачи:

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

    Отправляет клиенту копию своего сертификата сервера.

    Отправляет клиенту строку случайного вызова

  4. Клиент использует копию сертификата сервера, полученную от сервер для проверки подлинности сервера.

  5. Клиент получает открытый ключ сервера от сервера сертификат.

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

    Что такое главный ключ?

  7. Сервер отправляет клиенту хешированный ключ всех рукопожатий обмен сообщениями между двумя сторонами.

    Из чего сделан этот ключевой хэш?

  8. Затем сервер и клиент генерируют ключ сеанса из различные случайные значения и ключи, и с помощью математического расчет.

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

Ключ сеанса сбрасывается, когда сеанс SSL либо истекает, либо завершается.

1 Ответ

2 голосов
/ 28 августа 2011

Я постараюсь ответить, насколько мне известно, здесь

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

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

  • Сколько типов сертификатов имеется в рукопожатии ичто это такое? В рукопожатии у вас есть сертификат сервера и опционально сертификат клиента (для двухфакторной аутентификации)

  • Имеет ли самозаверяющий сертификат корневой сертификат?Если да, то как я могу их получить? Корневой сертификат, насколько я знаю, означает те, которые идентифицирует сам СА, и, следовательно, ему больше не нужно его подписывать.Поскольку ваша личность еще может быть проверена и должна быть подписана ЦС, ваша не будет классифицироваться как корневой сертификат

  • Возможно ли переместить / скопировать самоподписанный сертификатс одного сервера на другой? Краткий ответ - да, хотя процедуры с одной платформы на другую отличаются.Отметьте [эту ссылку] (http://www.sslshopper.com/how-to-move-or-copy-an-ssl-certificate-from-one-server-to-another.html), в нем есть инструкции по копированию сертификата для нескольких платформ

  • Будет ли здесь отправлен встроенный сертификат? Нет, встроенный (Сертификат клиента) отправляется после того, как проверка идентификатора сервера завершена

  • Что такое главный ключ? Главный ключ - это ключ, который используется для получения ключа сеансадля последующего обмена данными. Также используется для хеширования сообщений и проверки подлинности сообщений в следующем наборе этапов

  • Из чего сделан этот ключевой хэш? Он сделан из главного ключа, отправленного клиентом. Чтобы проверить все сообщения, сервер отправил все сообщения, которые были переданы, и хэшировал его с главным ключом. Клиент также будет хэшировать свои сообщения с тем же ключом, а затемпо сравнению с данными, отправляемыми сервером.Только когда хеш совпадает, мы можем быть уверены, что мы все еще общаемся с тем же сервером

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