107 votes

Ajouter un certificat auto-signé à iphone Simulator ?

J'ai un certificat auto-signé à l'extrémité de mon API. J'essaie de tester certaines choses en utilisant le simulateur, mais je reçois le message "untrusted server certificate".

J'ai essayé d'utiliser Safari sur le simulateur pour télécharger le fichier .crt, mais cela ne semble pas fonctionner.

D'où vient le trousseau de clés d'iPhone Simulator ? Comment puis-je ajouter un certificat de confiance pour que mon application fonctionne ?

UPDATE

J'ai réussi à le faire fonctionner en créant une AC puis en ajoutant un certificat d'AC à l'aide de l'outil de provisionnement de l'iPhone. Ensuite, j'ai pu avoir un certificat signé par ce certificat CA sur le serveur API et la NSConnection a fonctionné. Pour une raison quelconque, je n'ai pas réussi à la faire fonctionner avec un certificat auto-signé. Je dois réessayer en utilisant le logiciel de provisionnement.

Ma vraie question est la suivante : comment faire pour que cela fonctionne sur le simulateur ? Je pense que le simulateur utilise le trousseau de clés de l'ordinateur réel.

1 votes

J'ai récemment rencontré ce problème avec un hôte approuvé par un certificat d'autorité de certification qui a été importé dans le trousseau de connexion sur le Mac de développement. (Autrement dit, mon Safari local fait confiance au site, mais pas au simulateur.) J'ai été surpris que cela ne fonctionne pas avec le simulateur. Comment utiliser l'outil de provisionnement de l'iPhone pour manipuler les certificats de confiance sur le simulateur ?

124voto

seafoxx Points 458

Juste pour info, si quelqu'un rencontre encore ce problème :

Il vous suffit de glisser et de déposer vos fichiers .cer dans la fenêtre de votre simulateur en cours d'exécution. Vous verrez Safari clignoter, puis la boîte de dialogue d'importation de votre certificat (ou autorité de certification)...

Fonctionne pour le simulateur iOS 7 (et je pense que cela a aussi fonctionné pour iOS 6).

3 votes

Le glisser-déposer fonctionne bien pour le simulateur iOS 7. Je peux vérifier que cela ne fonctionne PAS sur les simulateurs iOS 6.0/6.1.

2 votes

C'est moi ou depuis que je suis passé à Xcode 6, cette fonction glisser-déposer ne fonctionne plus que sur la version iOS 8 du simulateur. J'ai essayé le simulateur iPhone 5s iOS 7 et iOS 7.1, rien ne se passe lorsque je fais glisser le certificat sur la fenêtre du simulateur. Et maintenant je suis coincé et je ne peux pas tester mon application dans autre chose que iOS 8.

3 votes

J'ai trouvé une solution de contournement pour iOS 7 et 7.1 : placez votre fichier .cer sur un serveur web accessible (en ajoutant le type mime application/x-x509-ca-cert s'il en a besoin) et utilisez Safari sur le simulateur pour télécharger le certificat depuis le serveur web. Il vous demandera ensuite de l'installer comme si vous l'aviez glissé et déposé.

9voto

Jonah Points 11568

Regardez le shell script que Charles utilise pour installer son certificat auto-signé dans le trousseau du simulateur. http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

Voir aussi :

Il semblerait que l'installation de votre propre certificat dans le simulateur nécessite de l'installer sur un appareil via Safari, puis de copier la ligne résultante depuis l'écran de l'appareil. TrustStore.sqlite3 dans celle du simulateur.

0 votes

La réponse de @nailer a été mise à jour avec quelques références supplémentaires, pour autant que je sache le format de ces blobs dans TrustStore.sqlite3 est opaque (et potentiellement sujet à changement) donc l'approche que d'autres ont pris semble être d'installer le cert sur un appareil via Safari et de copier la ligne TrustStore résultante dans leur simulateur.

2voto

Heath Borders Points 8067

Utilisation de Extracteur de sauvegarde pour iPhone j'ai copié les données de mon iPhone TrustStore.sqlite3 en ~/Library/Application Support/iPhone Simulator/6.0/Library/Keychains en écrasant le fichier existant. J'ai essayé d'insérer une seule ligne avec le sqlite suivant, mais je n'ai pas réussi à le faire fonctionner.

sqlite3 ~/backup/iOS\ Files/TrustStore.sqlite3
sqlite3>.mode insert
sqlite3>.output working.sql
sqlite3>select * from tsettings;
sqlite3>.quit

Maintenant, working.sql a le contenu entier de la table tsettings (dans mon cas, 1 ligne).

sqlite3 ~/Library/Application\ Support/iPhone\ Simulator/6.0/Library/Keychains/TrustStore.sqlite3
sqlite3>INSERT INTO tsettings VALUES(X'...
sqlite3>.quit

Encore une fois, les commandes sqlite ci-dessus n'ont pas fonctionné pour moi, mais pourraient être un bon point de départ pour quelqu'un d'autre. En copiant l'intégralité de TrustStore.sqlite3 de la sauvegarde dans le simulateur a bien fonctionné.

0voto

Daniel Hepper Points 4992

Je ne connais pas de moyen d'importer le certificat, mais il existe un moyen d'établir des connexions HTTPS sans certificat de serveur valide. Voir ce fil de discussion : http://stackoverflow.com/questions/933331/how-to-use-nsurlconnection-to-connect-with-ssl-for-an-untrusted-cert

Ce n'est pas exactement une réponse à votre question, mais j'espère que cela vous aidera.

0voto

Shanmu G Points 80

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X