Я занимаюсь разработкой приложения для Android, которое требует использования веб-сервисов .Net через SSL, с которым у меня нет опыта. Сейчас я ищу руководство и пояснения по рукопожатию и сертификатам SSL.
Примечание : сервер использует IP-адрес , а НЕ доменное имя. Это приложение для внутренней сети.
До сих пор я создал сертификат (называемый самоподписанным?) На веб-сервере из IIS 7.
Чтобы использовать его из приложения Android, я нашел два способа сделать это:
1). Внедрил сертификат в приложение (Какой сертификат? Как его получить?)
2). Доверяйте всем сертификатам (ppl сказал, что при таком подходе есть проблемы с безопасностью, не могли бы вы рассказать подробнее? Он все еще выполняет рукопожатие?)
СЕРТИФИКАТЫ:
Сколько типов сертификатов в рукопожатии и что они?
Имеет ли самоподписанный сертификат корневой сертификат? Если да, как я могу их получить?
Можно ли переместить / скопировать самозаверяющий сертификат с одного сервера на другой?
HANDSHAKE:
Прежде всего, правильно ли этот процесс?
Процесс рукопожатия SSL (скопированный с веб-сайта) описан ниже:
Клиент инициирует процесс рукопожатия SSL, отправив URL
начиная со следующего: https: // к серверу.
Клиент изначально отправляет веб-серверу список каждого шифрования
алгоритм, который он поддерживает. Алгоритмы, поддерживаемые SSL, включают RC4
и Стандарт Шифрования Данных (DES). Клиент также отправляет сервер
его случайная строка вызова, которая будет использоваться позже в
процесс.
Будет ли здесь отправлен встроенный сертификат?
Далее веб-сервер выполняет следующие задачи:
Выбирает алгоритм шифрования из списка шифрования.
алгоритмы, поддерживаемые и полученные от клиента.
Отправляет клиенту копию своего сертификата сервера.
Отправляет клиенту строку случайного вызова
Клиент использует копию сертификата сервера, полученную от
сервер для проверки подлинности сервера.
Клиент получает открытый ключ сервера от сервера
сертификат.
Затем клиент генерирует секрет перед мастером. Это другой
случайная строка, которая в свою очередь будет использоваться для генерации сеанса
ключ для сеанса SSL. Затем клиент шифрует другое значение
называется секретным ключом premaster, используя открытый ключ сервера, и
возвращает это зашифрованное значение на сервер. Это сопровождается
ключевой хэш сообщений рукопожатия и главный ключ. Хеш
используется для защиты сообщений, которыми обмениваются в процессе рукопожатия.
Хеш генерируется из первых двух переданных случайных строк
между сервером и клиентом.
Что такое главный ключ?
Сервер отправляет клиенту хешированный ключ всех рукопожатий
обмен сообщениями между двумя сторонами.
Из чего сделан этот ключевой хэш?
Затем сервер и клиент генерируют ключ сеанса из
различные случайные значения и ключи, и с помощью математического
расчет.
Сеансовый ключ используется в качестве общего секретного ключа для шифрования и
расшифровать данные, которыми обмениваются сервер и клиент.
Ключ сеанса сбрасывается, когда сеанс SSL либо истекает, либо завершается.