Настройка TrustKit

Я работаю над приложением, которое нужно быстро включить https для сетевого общения. Наша озабоченность по этому поводу возникла, когда мы заметили, что отправляем все наши учетные данные пользователя по URL, Это не хорошо, потому что тогда наши открытые имена пользователей и пароли. После многих исследований кажется, что закрепление открытого ключа SSL-сертификата сервера - это путь. Я решил использовать TrustKit закрепить открытый ключ сертификата, чтобы нам не пришлось закреплять весь сертификат в приложении. Таким образом, мы не должны продолжать заменять сертификат сверхурочно, срок его действия истекает, таким образом, не нужно создавать новый IPA или отправлять в Apple. Чтобы начать работу, мне нужно ответить на несколько вопросов.

Итак, я понимаю, что есть три основных момента, с которых мне нужно начать TrustKit,

1. Мне нужно знать домены, которые мы собираемся использовать, и включить их в наш info.plist.

  • ВОПРОС: Сервер в этом домене должен сделать какую-либо подготовку, чтобы получить TrustKit с чем нужно все справиться?

2. Мне нужно 2 хэша открытых ключей, которые также должны быть включены в info.plist.

  • ВОПРОС: Как извлечь хеши открытых ключей из сертификата? Откуда мне взять эти хеши?

3. Мне нужно знать, какой алгоритм с открытым ключом использовать.

  • ВОПРОС: Что это? И как мне узнать, какой использовать?

После того, как все это на месте, есть ли что-то еще, что мне нужно сделать appwise, чтобы быть в состоянии убедиться, TrustKit это работа в долгосрочной перспективе?

2 ответа

Решение
  1. Самому серверу не нужно делать ничего особенного, а ваша команда по операциям / инфраструктуре делает это; см. 2. и резервный штифт.

  2. TrustKit предоставляет скрипт Python для генерации хэша и алгоритма, который вы ищете: https://github.com/datatheorem/TrustKit/blob/master/get_pin_from_certificate.py. Вам необходимо использовать скрипт в сертификате CA вашего домена (это будет первый хэш), а затем в другом сертификате CA, у которого вы купили резервный сертификат для своего домена. Этот резервный пин-код необходим в случае, если вам нужно быстро повернуть (первый) сертификат на вашем сервере, не блокируя приложение. Это объясняется более подробно здесь: https://noncombatant.org/2015/05/01/about-http-public-key-pinning/.

  3. Сценарий, описанный в 2. также возвращает алгоритм. Это алгоритм (RSA, ECDSA) открытого ключа, который встроен в сертификат сервера. Это необходимо для TrustKit, потому что iOS не предоставляет API для автоматического определения алгоритма сертификата.

Чтобы получить Алгоритм и Хэш из сертификата (и больше информации) используйте

https://www.ssllabs.com/ssltest/

Другие вопросы по тегам