web-dev-qa-db-fra.com

Ajout d'un certificat auto-signé à iphone Simulator?

J'ai un certificat auto-signé au point de terminaison de mon API. J'essaie de tester certaines choses en utilisant le simulateur mais j'obtiens un "certificat de serveur non approuvé".

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

D'où iPhone Simulator tire-t-il son trousseau? Comment puis-je ajouter un certificat de confiance pour que mon application fonctionne?

MISE À JOUR

Je l'ai fait fonctionner en créant une autorité de certification, puis en ajoutant un certificat d'autorité de certification à l'aide de l'outil de configuration iPhone. Ensuite, j'ai pu avoir un certificat signé par ce certificat CA sur le serveur API et NSConnection a juste fonctionné. Je n'ai pas pu le faire fonctionner à l'aide d'un certificat auto-signé pour une raison quelconque. Je dois réessayer en utilisant le logiciel d'approvisionnement.

Ma vraie question est de savoir comment faire fonctionner cela sur le simulateur? Je pense que le simulateur utilise le trousseau de l'ordinateur réel.

72
jr.

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

glissez et déposez simplement vos fichiers .cer dans votre fenêtre Simulator en cours d'exécution. Vous verrez Safari clignoter, puis la boîte de dialogue d'importation de votre certificat (ou autorité de certification) ...

Travailler pour iOS 7 Simulator (et je pense que cela fonctionnait aussi pour iOS 6).

100
seafoxx

Pour ceux qui trouvent que le glisser-déposer du certificat sur le simulateur ne fonctionne pas, il y a eu une modification récente qui ajoute une étape supplémentaire .

Le simulateur doit être explicitement invité à faire confiance à l'autorité de certification racine. Pour ce faire, allez à:

Général -> À propos -> Paramètres de confiance du certificat -> "Activer la confiance totale pour le certificat racine" pour votre certificat particulier

Voir réponse complète ici :

33
Gautham C.

J'ai eu ce même problème pendant des mois et aujourd'hui je l'ai finalement résolu avec:

ADVTrustStore

Vous allez vouloir utiliser un projet appelé ADVTrustStore de github. Il fait un peu de magie mais il installera correctement les certificats dans votre magasin de confiance racine sur le simulateur.

Étapes pour installer un certificat personnalisé

# Clone the repo
git clone https://github.com/ADVTOOLS/ADVTrustStore.git

# Enter the repo directory
cd ADVTrustStore/

# Copy your .crt file 
cp somewhere/something.crt my.crt

# conver to a .pem file
openssl x509 -in my.crt -out my.pem -outform PEM

# Install the pem in the simulators
./iosCertTrustManager.py -a my.pem

Grâce à ce processus, j'ai pu obtenir un rendu correct des images GoogleStreetView derrière un pare-feu d'entreprise en utilisant la démission SSL avec des certificats auto-signés

Contexte

J'utilisais CharlesProxy et j'ai remarqué qu'il installait correctement les certificats dans le simulateur, mais ils n'apparaissaient pas dans la section Paramètres - Profils . Puis, après quelques recherches, j'ai découvert cet outil. Il existe probablement quelques autres outils, mais dans mon cas, le glisser-déposer n'a jamais fonctionné correctement dans tous les cas. Safari serait bien mais pas mes applications.

16
Jeef

Jetez un œil au script Shell que Charles utilise pour installer leur certificat auto-signé dans le trousseau du simulateur. http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

Voir également:

Il semble que l'installation de votre propre certificat dans le simulateur puisse nécessiter de l'installer sur un appareil via Safari, puis de copier la ligne résultante à partir de TrustStore.sqlite3 dans le simulateur.

9
Jonah

En utilisant iPhone Backup Extractor , j'ai copié TrustStore.sqlite3 en ~/Library/Application Support/iPhone Simulator/6.0/Library/Keychains, écrasant le fichier existant. J'ai essayé d'insérer une seule ligne avec le sqlite suivant, mais je n'ai pas pu 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 tout le contenu 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. Copie de l'intégralité de TrustStore.sqlite3 de la sauvegarde dans le simulateur a très bien fonctionné.

2
Heath Borders

Jetez un œil au iostrust Ruby gem: http://github.com/yageek/iostrust

0
yageek