Comment utiliser Charles Proxy sur le simulateur Xcode 6 (iOS 8)?

84

Il semble que le répertoire du simulateur iOS ait changé. Il était dans ~/Library/Application\ Support/iPhone\ Simulator/et maintenant il est ~/Library/Developer/CoreSimulator/Devices/.

codeperson
la source

Réponses:

121

Mise à jour: Charles 3.9.3+ a une fonction intégrée pour configurer vos simulateurs iOS (c.-à-d. Installer le certificat SSL Charles). Cela se trouve dans le menu Aide de l'application Charles. ( Help > SSL Proxying > Install Charles Root Certificate in iOS Simulators)

Ce qui suit s'applique à Charles 3.9.2:

Téléchargez le script shell de configuration à partir du site Web Charles Proxy . Ensuite, remplacez le script par ce qui suit et exécutez-le sur votre Mac:

#/bin/bash
install() {
if [ -f "$SQLITEDBPATH" ]; then
cp -n "$SQLITEDBPATH" "$SQLITEDBPATH.charlesbackup"
sqlite3 "$SQLITEDBPATH" <<EOF
INSERT INTO "tsettings" VALUES(X'189B6E28D1635F3A8325E1E002180DBA2C02C241',X'3123302106035504030C1A436861726C65732050726F78792053534C2050726F7879696E6731243022060355040B0C1B687474703A2F2F636861726C657370726F78792E636F6D2F73736C3111300F060355040A0C08584B3732204C74643111300F06035504070C084175636B6C616E643111300F06035504080C084175636B6C616E64310B3009060355040613024E5A',X'3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D225554462D38223F3E0A3C21444F435459504520706C697374205055424C494320222D2F2F4170706C652F2F44544420504C49535420312E302F2F454E222022687474703A2F2F7777772E6170706C652E636F6D2F445444732F50726F70657274794C6973742D312E302E647464223E0A3C706C6973742076657273696F6E3D22312E30223E0A3C61727261792F3E0A3C2F706C6973743E0A',X'3082045E30820346A003020102020101300D06092A864886F70D01010505003081913123302106035504030C1A436861726C65732050726F78792053534C2050726F7879696E6731243022060355040B0C1B687474703A2F2F636861726C657370726F78792E636F6D2F73736C3111300F060355040A0C08584B3732204C74643111300F06035504070C084175636B6C616E643111300F06035504080C084175636B6C616E64310B3009060355040613024E5A3020180F31383939313233313132303030305A170D3338303932343033313930355A3081913123302106035504030C1A436861726C65732050726F78792053534C2050726F7879696E6731243022060355040B0C1B687474703A2F2F636861726C657370726F78792E636F6D2F73736C3111300F060355040A0C08584B3732204C74643111300F06035504070C084175636B6C616E643111300F06035504080C084175636B6C616E64310B3009060355040613024E5A30820122300D06092A864886F70D01010105000382010F003082010A02820101008349587455EFB272E397A31D3B52D9B13115C93F320766D2D451117F45C40285506027079ED439CABB94D44F1AE136EB1E79BF77ABE43345AD1D436809CF9E035C439272F3CA917DCADD7FBD0E3929F1A345F0B89096130BBD116F8D3AB5655789B7B0831325BD22903F198DA6BDDA30C08DFD17CE9AB51C48555264307BCF789A2B6C48DF4ECAF3EA2C092EE737AD8F397900AC03303BFE2AE43549030A7866CB6FE9B04B9F6EC498B4E7369E99B45491BF093858A77C72F8ADC818E018D413265E39446BE514F78EB57A23AA88F630776F861A9163E04AD38EE8A5C9219D0FC23F6B9A6324455DEA6F4A6A251ECA1FA3D6288CB89FD12A2062A3A015A56F250203010001A381BC3081B9300F0603551D130101FF040530030101FF307706096086480186F842010D046A136853534C2050726F7879696E6720697320656E61626C656420696E20436861726C65732050726F78792E20506C6561736520766973697420687474703A2F2F636861726C657370726F78792E636F6D2F73736C20666F72206D6F726520696E666F726D6174696F6E2E300E0603551D0F0101FF040403020204301D0603551D0E04160414BB27F4CB2EB6DBB058101BBD803F38D208D76129300D06092A864886F70D010105050003820101000041F935F30B209E56360F7E3D9C30314A213323C47EDCEA1467600A50FFE4E8E39DFCA8C8D34463C34745FF04C870F1DF28BB772DB0CF1BCA677B70842C742BC6D5FB00559AD643C6BF2C95BD0B855A961D7D6A3EADA9C642E9A789474C4AD838C6F732D8D859548D30829DF7A32D098FE3F00147DAF08C0B37DD597184C1E27A61EA42050C73994E809013CB21E37BF84BF923BCEFEA6164FD28AB9058CCC48F1F486FC1C47EBD8A9C933F542401B11F36A003E47B141A41C7B326D18D023E11EDB445699AA44800254EA33F174FD5EB1CCCE6A09365751FF905988C06315B5575067BF65EC24CAD1A6A601846D1D2F51F1F420A2762990B044000619D1C84');
EOF
fi
}

for SQLITEDBPATH in ~/Library/Developer/CoreSimulator/Devices/*/data/Library/Keychains/TrustStore.sqlite3; do
    echo $SQLITEDBPATH
    install
done

echo "The Charles SSL CA Certificate has been installed for the iPhone Simulator"

Quelques points à noter:

  • vous devez ouvrir Charles avant de lancer le simulateur. Si vous fermez Charles, les requêtes réseau échoueront jusqu'à ce que vous redémarriez le simulateur
  • vous devrez le faire chaque fois que vous "Réinitialisez le contenu et les paramètres ..." sur le simulateur
  • Pour Xcode 5: si vous souhaitez configurer Charles Proxy sur Xcode 5 et versions antérieures, vous n'avez pas besoin de modifier le script d'origine. Téléchargez-le simplement à partir du site Web de Charles et exécutez-le tel quel
codeperson
la source
4
Fonctionne après le redémarrage du simulateur.
avdyushin
9
Votre réponse semble résoudre le problème de demande SSL. mais le problème principal pourrait être que Charles ne gère aucune demande du simulateur iOS 8.0 / Xcode6 Savez-vous comment le résoudre?
aelam
1
Je pense que le script a été déplacé ici: charlesproxy.com/documentation/faqs/... (et en lisant la source, on dirait qu'il a été mis à jour comme vous le suggérez)
Ian Dundas
1
J'ai suivi cela mais je vois une erreur dans le terminal - Échec de la contrainte UNIQUE: tsettings.sha1
Bêta
1
FYI- J'ai mis à jour cette réponse pour inclure des instructions pour télécharger Charles 3.9.3 avec l'installation du certificat via son menu Aide, plutôt que d'avoir besoin d'un script.
codeperson
35

Je viens de tester Charles sur le simulateur Xcode 7 / iOS9. Juste quelques conseils que je souhaite ajouter si vous rencontrez des problèmes:

  • Assurez-vous que " Activer le proxy Mac OS " et " Utiliser le proxy HTTP " sont cochés sous Proxy de Charles | Paramètres du proxy; et éventuellement cochez « Activer le proxy Mac OS X au démarrage » si vous ne souhaitez pas effectuer cette étape à chaque fois que vous démarrez Charles.
  • Si votre configuration de proxy automatique (et / ou détection automatique de proxy ) est définie dans vos Préférences Système | Réseau, vous devez le décocher pour éviter que le proxy Web (HTTP) et le proxy Web sécurisé (HTTPS) de Charles ne prennent effet.
  • Si votre entreprise a besoin d'un serveur proxy indépendant de Charles, vous devez répliquer manuellement les paramètres à l'intérieur de Charles de peur qu'ils ne soient remplacés par Charles et que vous ne puissiez pas accéder à Internet. Notez l'URL du proxy et les numéros de port avant de démarrer Charles. Transcrire ces proxy Web et Secure Web Proxy paramètres sous Charles Proxy | Paramètres du proxy externe.
  • " Activer le proxy SSL " et ajoutez votre point de terminaison sur la liste, via Charles 'Proxy | Paramètres de proxy SSL.
  • " Installer le certificat racine Charles dans le simulateur iOS " via l'aide de Charles | Menu proxy SSL.
  • Et oui, assurez-vous que Charles est configuré et démarré avant de démarrer le simulateur.
  • Enfin pour l'instant, désactivez ATS pendant le développement jusqu'à ce que nous entendions plus d'Apple.
Hampden123
la source
"Enfin pour l'instant, désactivez ATS pendant le développement jusqu'à ce que nous entendions plus d'Apple." - Spot on, absent des autres réponses ci-dessus.
Mark Gibaud
Merci! Ils devraient mettre cela sur le site Web de Charles!
Rudolf J
Charles prend en charge App Transport Security (ATS) à partir de la version 3.11.4.
Marián Černý
1
+1 pour décocher la configuration automatique du proxy . J'ai un fichier .pac dans l'environnement réseau de l'entreprise et le trafic du simulateur peut ne pas apparaître dans Charles à cause de cela.
iplus26
"Assurez-vous que" Activer le proxy Mac OS "et" Utiliser le proxy HTTP "sont cochés sous Proxy de Charles | Paramètres du proxy" Cela m'aide. Merci!
S.Matsepura
17

D'après la documentation de Charles

Le simulateur iOS doit utiliser les paramètres de proxy du système. Si ce n'est pas le cas, essayez de quitter et de redémarrer le simulateur iOS. À partir de Xcode 6, il semble important que Charles s'exécute et soit défini comme proxy système Mac OS X avant d'exécuter le simulateur iOS.

Lisez ici

Alors quittez simplement votre simulateur, ouvrez charles, puis exécutez à nouveau l'application. Après cela, vous pouvez suivre vos appels réseau.

REMARQUE: vos appels réseau échoueront si vous quittez Charles. Vous devrez donc soit quitter le simulateur et le relancer, soit rouvrir Charles.

iHulk
la source
1
J'ai trouvé que si vous avez une URL de proxy "autoconfigure", Charles Proxy ne fonctionnera pas. Il semble que l'URL de configuration automatique remplace tous les paramètres de proxy manuels. La suppression de l'URL de configuration automatique et la spécification des paramètres manuels (avec des informations d'identification, dans mon cas) ont permis à Charles de reconfigurer les paramètres et cela a fonctionné .. sans même redémarrer le simulateur iOS (7.1).
Sean Aitken
12

Une autre façon de le faire consiste à accéder au certificat http://charlesproxy.com/charles.crt sur l'appareil

qui vous présentera l'écran:

écran d'invite d'installation du certificat

user1307434
la source
J'ai essayé cette méthode mais elle n'a pas non plus réussi à charger le site sécurisé lors de l'exécution du serveur local. Quelqu'un peut-il expliquer comment traiter ce problème?
Ganesh Pandhere
1
Essayez de naviguer à l'aide de Safari pour voir s'il y a un problème avec le certificat. Pour ce faire, cliquez sur le symbole de verrouillage de votre site Web. Fenêtre de dialogue du certificat Safari . Je soupçonne que vous utilisez un certificat auto-signé et que vous devez installer le certificat client sur votre machine. Ceci peut être réalisé via Safari et en choisissant Trust -> «always allow».
user1307434
J'ai dû faire cela pour me débarrasser des erreurs SSL Handshake.
Will Larche
2

Je n'ai pas vu le script shell de configuration sur cette page. J'ai fait ce qui suit et cela a fonctionné pour moi:

http://raptureinvenice.com/getting-the-charles-debugging-proxy-to-work-with-ios-and-genymotion/

Andrew McKinley
la source
Cette réponse est meilleure que celle de @ jonsibley. Le script de configuration sur le site Web de Charles a disparu.
Hai Feng Kao
Je pense que cela vient d'être déplacé ici: charlesproxy.com/documentation/faqs/...
Ian Dundas
2

Regarde ça:

Depuis Charles v3.9.3, il y a un élément dans le menu Aide, "Installer le certificat SSL de Charles CA dans les simulateurs iOS", qui installera automatiquement le certificat SSL CA de Charles dans vos simulateurs iOS.

Vous pouvez également modifier votre code afin que NSURLConnection accepte n'importe quel certificat SSL. Veuillez consulter la question et la réponse sur Stack Overflow: Comment utiliser NSURLConnection pour se connecter avec SSL pour un certificat non approuvé?

Vous pouvez le vérifier sur ce lien: http://www.charlesproxy.com/documentation/faqs/ssl-connections-from-within-iphone-applications/

atulkhatri
la source
2

L'installation du certificat racine Charles dans les simulateurs iOS ne fonctionne pas dans la version actuelle de CharlesProxy (3.11) avec les simulateurs Xcode 7 / iOS 9.

À la place, utilisez l'option «Installer le certificat racine Charles sur un appareil mobile ou un navigateur distant ...». Cela vous donnera une URL pour le certificat.

Si vous ouvrez cette URL dans Safari dans le simulateur, vous aurez alors la possibilité d'installer le certificat.

Vous devez toujours désactiver la sécurité du transport des applications. Je ne comprends pas pourquoi cela est nécessaire lorsque le certificat est installé; Je suppose que CharlesProxy n'utilise pas de clés / signatures suffisamment grandes.

JosephH
la source
Si rien d'autre, le certificat est auto-signé et il est certain que cela ne fonctionnera pas avec les exigences ATS d'Apple. La première étape consiste à faire signer le certificat de Charles par une autorité de certification sanctionnée, mais la logistique mise à part, cela va coûter de l'argent. Le domaine doit également être accessible au public. Etc. Etc. Ce ne sera pas facile, voire réalisable.
Hampden123
@ Hampden123 Autant que je sache, le mécanisme de sécurité du transport des applications d'Apple autoriserait un certificat auto-signé tant qu'il a été installé correctement dans l'appareil iOS en tant que certificat de confiance - c'est pourquoi je pense que charlesproxy a besoin de désactiver ATS pour une raison différente. Je n'arrive pas à accéder à la documentation Apple ATS actuellement pour vérifier cela.
JosephH
Si vous (ou quelqu'un) réussissez à fournir un certificat auto-signé à un appareil iOS 9 sans désactiver ATS, veuillez me faire savoir comment vous procédez. TIA!
Hampden123
1

Juste (re) démarrer le simulateur après que Charles ait commencé à le réparer pour moi.

Lavoy
la source
1

Pour ceux qui sont aux prises avec des connexions non fiables sur les simulateurs de Xcode 9 beta:

Je ne sais pas si le script d'installation fonctionne ou non, mais vous pouvez installer le certificat de charles de la même manière que sur un appareil physique - via Safari.

Dernière étape nécessaire (bien sûr après l'installation du certificat via un script ou via Safari): Allez dans les paramètres de Simluator -> général -> à propos -> Paramètres de confiance du certificat -> Charles Proxy Custom Root ... -> activer 💥

Kubba
la source
1

Étapes pour le simulateur iOS.

  • Install Charles - Télécharger
  • Menu Charles -> Proxy -> Activer le proxy Mac
  • Menu Charles -> Outils -> Proxy -> Paramètres proxy -> MacOS -> Cochez toutes les cases
  • Installer le certificat Charles dans les simulateurs iOS
  • Menu Charles -> Aide -> Proxy SSL -> Installer Charles Ceritificate dans les simulateurs iOS
  • Activer le certificat Charles dans les simulateurs iOS
  • Paramètres des simulateurs iOS -> Général -> À propos -> Paramètres de confiance du certificat -> Activer
  • Si le trafic n'apparaît pas, exécutez Charles avant le simulateur

Étapes pour iPhone / iPad.

  • Ouvrez l'application de bureau Charles (Mac / Windows)
  • Aller au menu Charles -> Aide -> SSL Proxying -> Installer Charles Ceritificate sur un appareil mobile ou un navigateur distant -> Sélectionner -> une fenêtre contextuelle apparaît avec les étapes ci-dessous `

    Configurez votre appareil pour utiliser Charles comme proxy HTTP sur 192.168.0.100:8888 , puis naviguez sur chls.pro/ssl pour télécharger et installer le certificat.

  • Accédez aux paramètres de l'iPhone -> Wifi -> cliquez sur le wifi sélectionné -> Proxy Http -> Configurer le proxy -> sélectionnez Manuel -> Donner le serveur comme 192.168.0.100 et portez comme 8888 -> Enregistrer

  • Aller au navigateur iPhone -> Charger chls.pro/ssl -> Il apparaîtra ci-dessous popup `

    Le site Web tente de télécharger un profil de configuration. Voulez-vous autoriser cela? Bouton Ignorer et bouton Autoriser

  • Cliquez sur le bouton Autoriser -> Il téléchargera le profil

  • Aller aux paramètres de l'iPhone -> Général -> Profils -> Profil téléchargé -> Sélectionnez le profil Charles Proxy -> Installer
  • Accédez aux paramètres de l'iPhone -> Général -> À propos -> Paramètres de confiance du certificat -> Activer - Certificat CA Proxy Charles
  • Nous pouvons maintenant suivre les appels de l'application iPhone dans l'application Charles de bureau
Yano
la source
1
Paramètres des simulateurs iOS -> Général -> À propos -> Paramètres de confiance du certificat -> Activez ce dont j'avais besoin merci!
atalayasa le
0

Pour moi, c'est ce qui a fonctionné.

J'ai fait la même chose que nous faisons dans l'appareil.

  1. Ouvrez safari et parcourez chls.pro/ssl
  2. Acceptez et installez le certificat
  3. Allez dans Paramètres / À propos / Certificats de confiance et faites confiance au certificat Charles.

Je dois le faire sur 3 instances de simulateur, car les tests d'automatisation XCUI peuvent en tourner 3.

Saran
la source
0

Cela fonctionne pour moi après être allé au safari (simulateur) et visiter l'URL:

chls.pro/ssl 

Avant de devoir installer le certificat racine charles dans les simulateurs iOS (Charles: help / SSLproxying)

Cordialement

A. Trejo
la source