Настройка TrustKit
Я работаю над приложением, которое нужно быстро включить https
для сетевого общения. Наша озабоченность по этому поводу возникла, когда мы заметили, что отправляем все наши учетные данные пользователя по URL
, Это не хорошо, потому что тогда наши открытые имена пользователей и пароли. После многих исследований кажется, что закрепление открытого ключа SSL-сертификата сервера - это путь. Я решил использовать TrustKit
закрепить открытый ключ сертификата, чтобы нам не пришлось закреплять весь сертификат в приложении. Таким образом, мы не должны продолжать заменять сертификат сверхурочно, срок его действия истекает, таким образом, не нужно создавать новый IPA или отправлять в Apple. Чтобы начать работу, мне нужно ответить на несколько вопросов.
Итак, я понимаю, что есть три основных момента, с которых мне нужно начать TrustKit
,
1. Мне нужно знать домены, которые мы собираемся использовать, и включить их в наш info.plist.
- ВОПРОС: Сервер в этом домене должен сделать какую-либо подготовку, чтобы получить
TrustKit
с чем нужно все справиться?
2. Мне нужно 2 хэша открытых ключей, которые также должны быть включены в info.plist.
- ВОПРОС: Как извлечь хеши открытых ключей из сертификата? Откуда мне взять эти хеши?
3. Мне нужно знать, какой алгоритм с открытым ключом использовать.
- ВОПРОС: Что это? И как мне узнать, какой использовать?
После того, как все это на месте, есть ли что-то еще, что мне нужно сделать appwise, чтобы быть в состоянии убедиться, TrustKit
это работа в долгосрочной перспективе?
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/.
Сценарий, описанный в 2. также возвращает алгоритм. Это алгоритм (RSA, ECDSA) открытого ключа, который встроен в сертификат сервера. Это необходимо для TrustKit, потому что iOS не предоставляет API для автоматического определения алгоритма сертификата.
Чтобы получить Алгоритм и Хэш из сертификата (и больше информации) используйте