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?
Vous devez vous connecter pour publier un commentaire.
J'ai essayé avec ceci:
inPKCS12Data est correct mais les éléments est vide. Ce qui se passe?
Je l'ai fait pour une application récente en rendant le dossier documents pour l'application accessible via itunes. Nos utilisateurs sont alors invité à glisser leur clé générée (dans un fichier au format p12) dans le panneau documents pour notre application dans iTunes. Lorsque l'application est démarrée, il vérifie l'existence du fichier p12 et, si elle existe, importe le fichier dans le trousseau d'accès.
Ce n'est pas la procédure la plus simple, mais c'est le plus sûr parce que vous n'avez pas de fichier de clé privée être envoyés par e-mail.
Si un .p12 fichier n'est pas trop grande, vous pouvez encoder à l'aide de Base64 et puis d'intégrer un lien dans un e-mail avec une url personnalisée régime, par exemple:
Utilisateur clique sur le lien, votre application enregistre le certificat de quelque part pour une utilisation future. Juste assurez-vous que le Courrier.app sur l'iPhone de ne pas marquer les e-mail.
Apple ne restreindre l'utilisation de l'appareil-clés/certificats pour ses propres applications/services, tels que WiFi, VPN, Messagerie, etc. Les applications de tierce partie ne sont pas en mesure d'utiliser l'une de ces touches/certs (sans jailbreak). Toutefois, les applications sont en mesure d'importer, de stocker et d'utiliser des clés et des certificats dans un in-app un trousseau de clés. En outre, vous pouvez partager des touches/certs à travers de multiples applications avec le trousseau d'accès-groupe fonctionnalité dans iOS.
J'ai récemment publié un billet de blog intitulé Dans l'Application Mobile Certificats Facile avec mCMS, qui peuvent avoir aidé. Notre société est le développement d'une API qui le rend facile à prendre en charge dans l'application des certificats, obtenu directement à partir de votre base Microsoft PKI. Notre solution offre en outre sur l'appareil de génération de clé, au lieu de générer un P12 sur une autre machine et j'essaie de l'importer dans votre application.
Si vous utilisez AirWatch pour la distribution de l'application, de leur SDK fournit la possibilité de fournir des certificats à partir de votre Autorité de certification pour vos appareils enregistrés. Cela vous permet de fournir votre certificat, puis d'y accéder à partir de votre application du code.
Le code proposé dans Trouver un Certificat Dans le Trousseau d'accès travail pour vous?
Ô homme, ce qui fait remonter des souvenirs douloureux à partir d'octobre/novembre 2009. J'ai été en mesure d'obtenir avec succès côté client, certificats de travail, mais j'ai du port libcurl pour l'iPhone (ce qui n'était pas facile, car la NDA est toujours en vigueur à l'époque).
Je n'ai pas fait application iPhone de développement dans plus d'un an donc je ne sais pas de combien est changé, mais si j'étais vous, je tiens tout d'abord essayer de s'en sortir sans côté client certs et si vous avez absolument besoin, vous pouvez utiliser libcurl avec format PEM certs.