it-swarm.com.de

SSL-Proxy/Charles- und Android-Probleme

Ich möchte Https-Anrufe von einem Android-Gerät mit dem Charles-Proxy-Tool testen. Ich muss den Inhalt der unformatierten Anfrage/Antwort für die Debugging-App sehen. Ich habe Charles durch Hinzufügen des Hosts und des Ports unter "Proxy-Einstellungen" -> Registerkarte "SSL" konfiguriert. Wenn ich die App starte, scheinen alle SSL-Anrufe schnell von Charles zu verschwinden. Hat jemand eine Idee, wie Sie dieses Problem beheben können? Charles-Dokumentation scheint keine Informationen für Android-Geräte zu haben.

57
bianca

Ich habe mir das Problem ausgedacht. Es ist, weil Charles 3.7 einige Fehler für Android-Geräte hat. Ich habe ein Update auf die Version Charles 3.8 Beta erhalten und scheint für mich gut zu funktionieren.

1
bianca

für das Android7

siehe: Wie bekomme ich Charles Proxy mit Android 7 Nougat?

für die Android-Version unter Android7

Führen Sie auf Ihrem Computer Charles aus:

  1. Öffnen Sie die Proxy-Einstellungen: Proxy -> Proxy-Einstellungen, Registerkarte "Proxies", aktivieren Sie "Transparentes HTTP-Proxy aktivieren", und merken Sie sich "Port" im Herzen. enter image description here

  2. SSL-Proxy-Einstellungen: Proxy -> SSL-Proxy-Einstellungen, Registerkarte "SSL-Proxying", "SSL-Proxying aktivieren" aktivieren und . Zu Locations hinzufügen: enter image description here enter image description here

  3. Öffnen Sie Access Control Settings: Proxy -> Access Control Settings. Fügen Sie Ihr lokales Subnetz hinzu, um Maschinen in Ihrem lokalen Netzwerk zu autorisieren, um den Proxy von einer anderen Maschine/einem anderen Gerät aus zu verwenden . enter image description here

In Android Phone:

  1. Konfigurieren Sie Ihr Mobiltelefon: Gehen Sie zu Einstellungen -> Drahtlos und Netzwerke -> WLAN -> Verbinden oder ändern Sie Ihr Netzwerk, geben Sie die IP-Adresse und den Port des Computers (8888) ein: enter image description here

  2. Charles SSL-Zertifikat erhalten Besuchen Sie diese URL in Ihrem mobilen Browser: http://charlesproxy.com/getsslenter image description here

  3. Geben Sie unter "Name des Zertifikats" ein, was Sie möchten

  4. Akzeptieren Sie die Sicherheitswarnung und installieren Sie das Zertifikat. Wenn Sie es erfolgreich installieren, wird wahrscheinlich Folgendes angezeigt: Auf Ihrem Telefon Einstellungen -> Sicherheit -> Vertrauenswürdige Anmeldeinformationen: enter image description here

Erledigt.

dann können Sie einige Tests auf Ihrem Mobiltelefon durchführen. Die verschlüsselte https-Anforderung wird in Charles angezeigt: enter image description here

64
User9527

Bearbeiten - diese Antwort war für eine frühere Version von Charles. Die richtigen Schritte für v3.10.x finden Sie unter @ semicircle21 Antwort - viel einfacher als dieser Ansatz ... :-)

Für was es sich lohnt, sind die Schritt-für-Schritt-Anweisungen dazu. Sie sollten gleichermaßen auch für iOS gelten:

  1. Öffnen Sie Charles
  2. Gehen Sie zu Proxy> Proxy-Einstellungen> SSL
  3. Aktivieren Sie "SSL-Proxy aktivieren".
  4. Wählen Sie "Ort hinzufügen" und geben Sie den Hostnamen und den Port ein (falls erforderlich).
  5. Klicken Sie auf OK und stellen Sie sicher, dass die Option aktiviert ist
  6. Laden Sie das Charles-Zertifikat von hier herunter: Charles-Zertifikat>
  7. Senden Sie diese Datei per E-Mail an sich.
  8. Öffnen Sie die E-Mail auf Ihrem Gerät und wählen Sie das Zertifikat aus
  9. Geben Sie unter "Name des Zertifikats" ein, was Sie möchten
  10. Klicken Sie auf OK und Sie sollten eine Meldung erhalten, dass das Zertifikat installiert wurde

Sie sollten dann die SSL-Dateien in Charles sehen können. Wenn Sie die Werte abfangen und ändern möchten, können Sie das Tool "Map Local" verwenden, das wirklich großartig ist:

  1. In Charles gehen Sie auf Tools> Map Local 
  2. Wählen Sie "Eintrag hinzufügen"
  3. Geben Sie die Werte für die Datei ein, die Sie ersetzen möchten
  4. Wählen Sie unter "Lokaler Pfad" die Datei aus, die stattdessen von der App geladen werden soll
  5. OK klicken
  6. Stellen Sie sicher, dass der Eintrag ausgewählt ist, und klicken Sie auf OK
  7. Führen Sie Ihre App aus
  8. Sie sollten in "Notizen" sehen, dass Ihre Datei anstelle der Live-Datei geladen wird
43
bkurzius

Vielen Dank für die Antwort von @bkurzius. Dieses Update ist für Charles 3.10+. (Der Grund ist hier )

  1. Öffnen Sie Charles
  2. Gehen Sie zu Proxy> SSL-Proxy-Einstellungen ... 
  3. Aktivieren Sie "SSL-Proxy aktivieren".
  4. Wählen Sie "Ort hinzufügen" und geben Sie den Hostnamen und den Port ein (falls erforderlich).
  5. Klicken Sie auf OK und stellen Sie sicher, dass die Option aktiviert ist
  6. Gehen Sie zu Help> SSL Proxying> Install Charles Root Certificate on a Mobile Device or Remote Browser... und befolgen Sie die Anweisungen. (Verwenden Sie den Browser des Android, um das Zertifikat herunterzuladen und zu installieren.)
  7. Geben Sie unter "Name des Zertifikats" ein, was Sie möchten
  8. Klicken Sie auf OK und Sie sollten eine Meldung erhalten, dass das Zertifikat installiert wurde
27
semicircle21

Siehe hier:

http://jaanus.com/blog/2012/02/12/debugging-http-on-an-Android-phone-or-tablet-mit-charles-proxy-für-fun-and-profit/

Sie müssten das charles.crt-Zertifikat auf Ihrem Gerät installieren. 

7
otso

Die am besten bewerteten Antworten funktionieren einwandfrei (ein bisschen alt, aber sie funktionieren immer noch), aber ich möchte nur erwähnen, dass wir seit Android N alle Ihre Apps konfigurieren können, um über unterschiedliche Zertifikate zu verfügen (nur für Debugging, Debugging usw.) , einschließlich des Charles SSL-Proxy-Zertifikats (wenn Sie das Charles-Zertifikat herunterladen und die .pem-Datei in Ihrem Raw-Ordner ablegen). Weitere Informationen finden Sie hier: https://developer.Android.com/training/articles/security-config.html

Auch die offizielle Charles-Dokumentation kann hilfreich sein, um dies einzurichten: https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

Ich hoffe, dies hilft, Charles in Ihrem App-Projekt nicht auf jedem einzelnen Android-Gerät einzurichten.

3
Sniper

Für den neueren Emulator kann es hilfreich sein, von der Befehlszeile aus zu starten: 

emulator -netdelay none -netspeed full -avd <emulator_name> -http-proxy http://<ip-address>:8888

Stellen Sie sicher, dass Sie den Anweisungen von @ User9527 oben für den Rest des Setups ebenfalls folgen

0
AllDayAmazing

Für mich war das Problem, dass die IP-Adresse, zu der Charles in meinen Proxy-Einstellungen weitergeleitet wurde, falsch war. Um das Problem zu lösen, bin ich zu ifconfig im Terminal gegangen und habe die verschiedenen IP-Adressen (neben inet) am Port 8888 für die derzeit aktiven Verbindungen ausprobiert

0