2011-01-11 6 views
3

На iOS я знаю, что мы можем оценить доверие с помощью SecTrustEvaluate(). Чтобы создать доверие, мы либо импортируем его из файла * .p12, либо создадим его с помощью массива сертификатов и набора политик.Хранение цепей сертификатов в цепочке ключей приложения

Я также знаю, что для надежного использования сервера, которому не доверяют по умолчанию, мы можем использовать SecTrustSetAnchorCertificates() для расширения списка корневых ЦС, используемых SecTrustEvaluate() для проверки сертификата сервера.

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

Одним из решений, которое приходит на ум, является просто получение всех сертификатов из брелка и установка их в качестве якорных сертификатов. Другой метод может быть для всех цепочек сертификатов на диске как файлы * .p12 и загружать их один раз при каждом запуске приложения.

ответ

2

eskimo1 от компании Apple Devforums ответил на это так:

Прежде всего, вам не нужно хранить сертификаты в связке ключей. Вы можете сохранить их в другом месте, если хотите (и создать SecCertificateRef, используя SecCertificateCreateWithData).

Во-вторых, ваш вопрос говорит о файлах .p12, но я не уверен, что это имеет отношение к вещам. В общем, вы используете только файл .p12 для распространения конфиденциальной информации, а сертификаты не являются конфиденциальными.

Наконец, вы можете хранить цепочку сертификатов, просто сохраняя постоянную ссылку на каждый сертификат в этой цепочке (или путем хранения фактических данных каждого сертификата).