IPhone app avec SSL certificats clients

Je suis en train de construire une application pour iphone qui a besoin d'accéder à un service web via le protocole https à l'aide de certificats client. Si j'ai mis le client cert (au format pkcs12) dans l'app bundle, je suis en mesure de le charger dans l'application et de faire le https appel (en grande partie grâce à stackoverflow.com).

Cependant, j'ai besoin d'un moyen de distribuer l'application, sans certs et le laisser à l'utilisateur de fournir son propre certificat. Je pensais juste faire en demandant à l'utilisateur d'importer le certificat dans l'iphone profils (paramètres->général>profils), qui est ce que vous obtenez par l'ouverture d'une .fichier p12 dans le Courrier.l'application puis je accéder à cet élément dans mon application. Je m'attends à ce que les certificats dans les profils sont disponibles à travers le trousseau de clés de l'API, mais je suppose que je suis en tort sur ce point.

1) Est-il un moyen d'accéder à un certificat que j'ai déjà chargé de l'iphone dans mon application?

2) Quelles sont les autres options que j'ai pour le chargement d'un utilisateur de certificat spécifié dans mon application? La seule chose que je peux venir avec est de fournir une interface où l'utilisateur peut donner une URL pour son .p12 cerificate, que je peux ensuite charger dans l'application trousseau de clés pour les utiliser plus tard, mais ce n'est pas exactement de l'utilisateur-friednly. Je suis à la recherche de quelque chose qui permettrait à l'utilisateur de mettre le cert sur le téléphone (email il à lui-même) et la charger dans mon application.

  • Pouvez-vous me dire comment charger le .p12 dans l'app, s'il vous plaît? J'ai besoin d'extraire le publick clé du certificat client. Merci
  • Je suis entré en contact avec une Pomme cadre de la Sécurité évangéliste, qui confirme ce qui a déjà été dit ici - certificats chargé de paramétrer->général>les profils peuvent seulement être utilisés par les applications (mail, safari). Votre application peut utiliser seulement ce que vous stockez dans son trousseau (ou de porte-clés d'autres applications 3ème partie qui partagent le même certificat de configuration). Comme pour le chargement, j'ai créé une appli livré avec le certificat (juste pour le test). J'ai lu l' .p12 à partir de mon application bundle et je reçois l'identité avec SecPKCS12Import. Vous pouvez ensuite l'utiliser pour obtenir la clé privée avec SecIdentityCopyPrivateKey.
  • J'ai essayé avec ceci: NSString *thePath = [[NSBundle mainBundle] pathForResource:@"certificat" ofType:@"p12"]; NSData *PKCS12Data = [[NSData alloc] initWithContentsOfFile:thePath]; CFDataRef inPKCS12Data = (CFDataRef)PKCS12Data; CFStringRef mot de passe = CFSTR("pass"); const void *les touches[] = { kSecImportExportPassphrase }; const void *les valeurs de[] = { mot de passe }; CFDictionaryRef optionsDictionary = CFDictionaryCreate(NULL, clés, valeurs, 1, NULL, NULL); CFArrayRef articles = CFArrayCreate(NULL, 0, 0, NULL); SecPKCS12Import(inPKCS12Data, optionsDictionary, &éléments); les éléments est vide.Ce qui se passe?
  • J'ai essayé avec SecPKCS12Import mais ne fonctionne pas... j'ai ajouté une réponse avec le code
  • Ceci est-il toujours vrai??? Que seulement intégré dans les applications peuvent lire les certificats à partir de l'iPhone trousseau??? Junos Pulse Client VPN fournit une liste de certificats installés dans le trousseau du système dans le cadre de c'est dans la configuration de l'application... je ne pense pas qu'il peut être classé comme un construit-dans l'app... Comment fait-il lire le trousseau du système???
  • avez-vous la solution à votre problème, je vais avoir le même problème 🙁
  • Est-il possible d'accès au système de porte-clés dans un mode en lecture seule? Si j'essaie d'ouvrir une connexion https à partir d'une application et le serveur utilise une partie de la "confiance" des certificats, telles que VeriSign, connexion réussit sans erreurs. Comment est-ce possible? Que signifierait ma demande en quelque sorte des accès pour les certificats. Ainsi est-il possible d'accéder à trousseau du système en mode de lecture seule?