Я хочу получить список сертификатов, установленных на iPhone или iPad. Поэтому я могу использовать это, чтобы выбрать его и использовать для проверки ssl на сервере. Однако я не могу получить этот список. Я видел в этой следующей ссылке, что в iOS невозможно получить сертификаты, так как можно получить доступ только к их собственной цепочке ключей. iOS get Configuration Profiles that are installedПолучить список сертификатов от устройства iOS
Однако я сомневаюсь:.
Из нижеуказанной ссылки Get Certificates in Keychain Я использую код для получения сертификатов. Однако я получаю нулевые данные.
NSDictionary *query = [NSDictionary dictionaryWithObjectsAndKeys:
(__bridge id)(kSecClassCertificate), kSecClass,
[NSNull null], kSecMatchSearchList,
kCFBooleanTrue, kSecReturnRef,
kSecMatchLimitAll, kSecMatchLimit,
nil];
CFDataRef *items = nil;
OSStatus status = SecItemCopyMatching((__bridge CFDictionaryRef)query, ((CFTypeRef *)&items));
Я м давая [NSNull нуль] для списка поиска с предположением, что если брелка исх является NULL, то устройство принимает брелка по умолчанию.
Мои вопросы: 1) Можно ли получить список установленных сертификатов с iPhone. 2) Если да, то как? Что не так в приведенном выше коде?
Похоже, вы пытаетесь внедрить аутентификацию клиента ssl, где закрытый клиент находится на клиенте, и это сертификат, который вы ищете на клиенте. Это верно? – quellish
Нет. У меня нет закрытого ключа в клиенте. Клиент будет иметь сертификаты, установленные на их устройствах. Мое приложение ничего не знает об этих сертификатах. Идея - представить список всех доступных сертификатов, установленных на устройстве iOS, пользователю. Дайте им выбор, чтобы выбрать один. И тогда приложение будет помнить этот сертификат и использовать его позже. Но, как уже упоминалось, я не могу получить список всех сертификатов, установленных на устройстве. – sridevi
Справа. Таким образом, у вас есть учетные данные клиента, установленные через профиль конфигурации. В любом случае, за то, что вы хотите сделать, вы ищете идентификатор с цепочкой сертификатов, а не сертификат (т. Е. Поиск kSecClassIdentity). Это может быть недоступно для вашего приложения в зависимости от того, как был настроен профиль конфигурации. – quellish