Ich möchte die Liste der Zertifikate auf dem iPhone oder iPad installiert bekommen. So kann ich das verwenden, um eins auszuwählen und für ssl Überprüfung am Server zu verwenden. Allerdings kann ich diese Liste nicht bekommen. Ich habe in diesem folgenden Link gesehen, dass es in iOS nicht möglich ist, Zertifikate zu erhalten, da man nur auf seinen eigenen Schlüsselbund zugreifen kann. iOS get Configuration Profiles that are installedHolen Sie sich Zertifikate Liste von iOS-Gerät
Allerdings bezweifle ich :).
Von untenstehenden Link Get Certificates in Keychain ich den Code verwenden Zertifikate zu erhalten. Ich bekomme jedoch keine Daten.
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));
Ich bin zu geben [NSNull null] Suchliste mit Annahme, dass, wenn Schlüsselanhänger ref NULL ist dann Gerät den Schlüsselbund Standard nimmt.
Meine Fragen sind 1) Ist es möglich, Liste der installierten Zertifikate vom iPhone zu erhalten. 2) Wenn ja wie? Was ist falsch im obigen Code?
Es klingt wie Sie versuchen, Client-SSL-Authentifizierung zu implementieren, wo der private Schlüssel im Client ist, und das ist das Zertifikat, das Sie auf dem Client suchen. Ist das korrekt? – quellish
Nein. Ich habe keinen privaten Schlüssel im Client. Client wird Zertifikate auf ihren Geräten installiert haben. Meine Anwendung weiß nichts über diese Zertifikate. Idee ist, dem Benutzer die Liste aller verfügbaren Zertifikate auf dem iOS-Gerät zu präsentieren. Gib ihnen die Wahl, um eine auszuwählen. Und dann erinnert sich die App an dieses Zertifikat und verwendet es später. Aber wie gesagt, ich kann die Liste aller auf dem Gerät installierten Zertifikate nicht bekommen. – sridevi
Rechts. Sie haben also die Client-Anmeldeinformationen über ein Konfigurationsprofil installiert. In beiden Fällen suchen Sie nach einer Identität mit einer Zertifikatskette, nicht nach einem Zertifikat (d. H. Nach kSecClassIdentity suchen). Abhängig davon, wie das Konfigurationsprofil eingerichtet wurde, ist es möglicherweise immer noch nicht für Ihre Anwendung verfügbar. – quellish