Подтвердить что ты не робот

Динамическое закрепление сертификата

У меня есть приложение iOS, которое будет распространяться среди нескольких клиентов, каждый из которых использует свою собственную сетевую инфраструктуру. Я хотел бы добавить некоторые возможности для закрепления сертификата, но мне нужно сделать это динамически, так как я не могу отправить приложение с пакетом cert/pubkey, так как для этого потребуется отдельная сборка для каждого клиента.

Моя идея - запросить настроенный HTTPS-сервер на каждом клиенте при запуске приложения, получить сертификат, потенциально извлечь открытый ключ и затем связать его.

Возможно ли это сделать в Swift или Objective-C? Я не смог найти соответствующие образцы кода или документацию.

4b9b3361

Ответ 1

Оперативно, будет намного легче управлять и восстанавливаться из-за неправильных конфигураций, если вы вставляете сертификаты или ключи в приложение. Если вы просто выталкиваете любой сертификат, отправленный сервером в приложение, в первый раз у вас нет механизма поддержки нового сертификата, если текущий истекает или будет повернут. Если это еще то, что вы хотели бы сделать, я бы рекомендовал посмотреть спецификацию HPKP, которая реализует тот же механизм, но для браузеров: https://tools.ietf.org/html/rfc7469

Кроме того, если серверы приложений не находятся под вашим контролем, есть большие изменения, связанные с тем, что привязка приведет к удалению приложения, если сертификат сервера неожиданно изменится. Будет ли команда, создающая приложение, получать информацию об изменениях инфраструктуры/сертификата на серверах приложений/клиентов, чтобы они могли своевременно выпускать обновление? Если нет, вы не должны этого делать.