Хранение цепочек сертификатов в цепочке ключей приложения
На iOS я знаю, что мы можем оценить доверие с SecTrustEvaluate(). Чтобы создать доверие, мы либо импортируем его из файла *.p12, либо создаем его, используя массив сертификатов и набор политик.
Я также знаю, что для того, чтобы гарантировать, что сервер, который не является доверенным по умолчанию, является доверенным, мы можем использовать SecTrustSetAnchorCertificates() для дополнения списка корневых ЦС, которые SecTrustEvaluate () использует для проверки сертификата сервера.
Теперь, как я могу гарантировать, что эти якорные сертификаты будут доступны при последующем запуске? Я могу хранить сертификаты, ключи и идентификационные данные в цепочке ключей приложения, но не в цепочке сертификатов. Даже если я сохраню все сертификаты в цепочке, как я узнаю, какие сертификаты должны использоваться в качестве якорных сертификатов?
Одно из решений, которое приходит на ум, - это просто получить все сертификаты из цепочки для ключей и установить их как якорные сертификаты. Другой способ может быть связан со всеми цепочками сертификатов на диске в виде файлов *.p12 и загружать их один раз при каждом запуске приложения.
1 ответ
eskimo1 от Apple Devforums ответил на это так:
Во-первых, вам не нужно хранить сертификаты в цепочке для ключей. Вы можете хранить их в другом месте, если хотите (и создать SecCertificateRef, используя SecCertificateCreateWithData).
Во-вторых, ваш вопрос касается файлов.p12, но я не уверен, что это имеет отношение к вещам. Как правило, вы используете только файл.p12 для распространения конфиденциальной информации, а сертификаты не являются конфиденциальными.
Наконец, вы можете сохранить цепочку сертификатов, просто сохранив постоянную ссылку на каждый сертификат в этой цепочке (или сохранив фактические данные каждого сертификата).