SSL-Zertifikate
Charles generiert seine eigenen Zertifikate für Websites, die es mit einem Charles Root-Zertifikat signiert, das eindeutig für Ihre Charles-Installation generiert wird (ab v3.10). Sie werden eine Warnung in Ihrem Browser oder einer anderen Anwendung sehen, wenn diese das Zertifikat empfängt, weil das Charles Root-Zertifikat nicht in Ihrer Liste der vertrauenswürdigen Stammzertifikate enthalten ist. Siehe SSL-Proxying.
Sie können sich dafür entscheiden, dem Zertifikat jeder Website dauerhaft zu vertrauen, wenn Sie darauf stoßen, in diesem Fall müssen Sie dem Charles Root Certificate nicht vertrauen. Wenn Sie automatisch jedem von Charles ausgestellten Zertifikat vertrauen möchten, fahren Sie mit diesen Anweisungen fort.
Die folgenden Anweisungen sind für verschiedene Browser und Anwendungen gedacht, um Ihnen zu helfen, Ihrem Charles Root-Zertifikat zu vertrauen, damit Sie keine Zertifikatswarnungen mehr sehen.
Bitte beachten Sie, dass sich der Ansatz für das Charles Root-Zertifikat mit der Version 3.10 von Charles geändert hat. Wenn Sie also dieses Verfahren bereits für eine ältere Version von Charles befolgt haben, müssen Sie es erneut durchführen.
Windows / Internet Explorer
Gehen Sie in Charles zum Menü „Hilfe“ und wählen Sie „SSL-Proxying > Charles Root-Zertifikat installieren“. Es erscheint ein Fenster mit der Warnung, dass das CA Root-Zertifikat nicht vertrauenswürdig ist.
Klicken Sie auf die Schaltfläche „Zertifikat installieren“, um den Assistenten für den Zertifikatsimport zu starten. Das Zertifikat muss in den Zertifikatspeicher „Vertrauenswürdige Stammzertifizierungsstellen“ importiert werden, setzen Sie also die automatische Auswahl des Zertifikatspeichers außer Kraft.
Schließen Sie den Assistenten ab, und Ihr Charles Root-Zertifikat ist nun installiert. Möglicherweise müssen Sie den IE neu starten, bevor die Installation wirksam wird.
Mozilla Firefox
Stellen Sie zunächst sicher, dass Firefox mit Charles verbunden ist. Sie sollten sehen, dass das Browsen von Firefox in Charles aufgezeichnet wird.
Besuchen Sie https://chls.pro/ssl in Firefox. Es wird ein Dialog zum Importieren von Zertifikaten angezeigt. Aktivieren Sie die Option „Dieser CA vertrauen, um Websites zu identifizieren“ und schließen Sie den Import ab.
macOS
Gehen Sie in Charles zum Menü „Hilfe“ und wählen Sie „SSL-Proxying > Charles Root-Zertifikat installieren“. Keychain Access wird geöffnet. Suchen Sie den Eintrag „Charles Proxy…“, und doppelklicken Sie darauf, um Informationen darüber zu erhalten. Erweitern Sie den Abschnitt „Vertrauen“, und ändern Sie neben „Bei Verwendung dieses Zertifikats“ den Wert von „Systemvorgaben verwenden“ in „Immer vertrauen“. Schließen Sie dann das Fenster mit den Zertifikatsinformationen und Sie werden aufgefordert, Ihr Administrator-Passwort einzugeben, um die Einstellungen für das Systemvertrauen zu aktualisieren.
Möglicherweise müssen Sie Safari beenden und erneut öffnen, um die Änderung zu sehen.
iOS-Geräte
- Stellen Sie Ihr iOS-Gerät so ein, dass es Charles als HTTP-Proxy in der App „Einstellungen“ > Wifi-Einstellungen verwendet.
- Öffnen Sie Safari und navigieren Sie zu https://chls.pro/ssl. Safari wird Sie auffordern, das SSL-Zertifikat zu installieren.
- Wenn Sie iOS 10.3 oder höher verwenden, öffnen Sie die Einstellungen.app und navigieren Sie zu Allgemein > Über > Zertifikatsvertrauenseinstellungen, suchen Sie das Charles Proxy-Zertifikat und schalten Sie es ein, um volles Vertrauen dafür zu aktivieren (Weitere Informationen zu dieser Änderung in iOS 10).
- Jetzt sollten Sie in der Lage sein, mit Charles auf SSL-Websites zuzugreifen, indem Sie SSL-Proxying verwenden.
Charles unterstützt App Transport Security (ATS) ab der Version 3.11.4.
iOS-Simulatoren
Beenden Sie Ihren iOS-Simulator. Starten Sie Charles und gehen Sie in das Menü „Hilfe“. Wählen Sie den Punkt „SSL-Proxying > Charles Root-Zertifikat in iOS-Simulatoren installieren“. Dadurch wird Ihr Charles Root-Zertifikat in all Ihren iOS-Simulatoren installiert. Wenn Sie nun den iOS-Simulator starten, sollten Sie in der Lage sein, auf SSL-Websites mit Charles zuzugreifen, indem Sie SSL-Proxying verwenden.
tvOS
Um die Proxy-Einstellungen auf tvOS zu ändern, müssen Sie den Apple Configurator 2 aus dem App Store verwenden.
- Erstellen Sie ein neues Profil
- Hinzufügen einer globalen HTTP-Proxy-Nutzlast
- Proxy-Typ: Manuell
- Geben Sie den Proxyserver und den Port ein, der auf Charles auf Ihrem Desktop-Rechner verweist. Es ist kein Benutzername oder Kennwort erforderlich.
- Fügen Sie das Charles-Stammzertifikat in einem Zertifikats-Payload hinzu:
- Wählen Sie in Charles im Menü Hilfe > SSL-Proxying die Option Charles-Stammzertifikat speichern und wählen Sie das .cer-Format aus dem Dateityp-Dropdown.
- Fügen Sie in Apple Configurator 2 einen Zertifikats-Payload mit dieser Datei hinzu.
Stellen Sie das Konfigurationsprofil auf Ihrem Apple TV bereit.
Gehen Sie dann in Einstellungen > Allgemein > Über > Zertifikate und aktivieren Sie das Vertrauen für das Charles Proxy-Zertifikat.
Android
Ab Android N müssen Sie Ihrer App eine Konfiguration hinzufügen, damit sie den von Charles SSL Proxying generierten SSL-Zertifikaten vertraut. Dies bedeutet, dass Sie SSL Proxying nur mit Apps verwenden können, die Sie kontrollieren.
Um Ihre App so zu konfigurieren, dass sie Charles vertraut, müssen Sie eine Netzwerksicherheitskonfigurationsdatei zu Ihrer App hinzufügen. Diese Datei kann die Systemvorgabe außer Kraft setzen, so dass Ihre Anwendung den vom Benutzer installierten CA-Zertifikaten (z. B. dem Charles Root Certificate) vertrauen kann. Sie können festlegen, dass dies nur für Debug-Builds Ihrer Anwendung gilt, so dass Produktions-Builds das Standard-Vertrauensprofil verwenden.
Fügen Sie Ihrer Anwendung eine Datei res/xml/network_security_config.xml hinzu:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Fügen Sie dann im Manifest Ihrer Anwendung einen Verweis auf diese Datei hinzu, wie folgt:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
Google Chrome
Bei macOS folgen Sie bitte den Anweisungen für macOS oben. Diese Anweisungen gelten nur für Windows.
In Charles gehen Sie zum Menü „Hilfe“ und wählen Sie „SSL-Proxying > Charles Root-Zertifikat speichern“. Speichern Sie das Stammzertifikat als Binärzertifikat (.cer) auf Ihrem Desktop oder an einem Ort, an dem Sie im nächsten Schritt leicht darauf zugreifen können.
In Chrome öffnen Sie die Einstellungen. Klicken Sie unten auf der Einstellungsseite auf „Erweitert“, um den erweiterten Bereich zu öffnen, und klicken Sie dann auf die Schaltfläche „Zertifikate verwalten…“.
Gehen Sie zur Registerkarte „Vertrauenswürdige Stammzertifizierungsstellen“ und klicken Sie auf „Importieren…“.
Suchen Sie die Zertifikatsdatei, die Sie im vorherigen Schritt von Charles gespeichert haben, und klicken Sie auf „Weiter“ und „Fertig stellen“, wobei Sie die Standardoptionen beibehalten, bis Sie den Import abgeschlossen haben. Chrome wird nun immer von Charles signierten Zertifikaten vertrauen.
Nach dem Import können Sie die von Ihnen gespeicherte Zertifikatsdatei löschen.
Java-Anwendungen
Sie können Ihr Charles-Stammzertifikat zu Ihrem Stammzertifikat-Vertrauensspeicher in Java hinzufügen, dann werden alle Java-Anwendungen den von Charles ausgestellten Zertifikaten vertrauen. Beachten Sie, dass Sie dies möglicherweise jedes Mal tun müssen, wenn Sie Ihre Java-Installation aktualisieren.
Gehen Sie in Charles zum Menü „Hilfe“ und wählen Sie „SSL Proxying > Charles Root Certificate speichern“. Speichern Sie das Root-Zertifikat als Base 64 kodiertes Zertifikat (.pem) auf Ihrem Desktop oder an einem Ort, an dem Sie im nächsten Schritt leicht darauf zugreifen können.
Suchen Sie nun die cacerts-Datei, sie sollte sich in Ihrem $JAVA_HOME/jre/lib/security/cacerts befinden, wobei $JAVA_HOME Ihr Java-Home-Verzeichnis für die von Ihnen verwendete JVM ist.
Unter Linux ist $JAVA_HOME wahrscheinlich bereits eingestellt. Unter macOS, wenn es nicht gesetzt ist, versuchen Sie /usr/libexec/java_home auszuführen, um den Ort Ihrer JVM zu erhalten.
Geben Sie dann (anstelle von $JAVA_HOME und dem entsprechenden Pfad zum Zertifikat) ein:
sudo keytool -import -alias charles -file ~/Desktop/charles-ssl-proxying-certificate.pem -keystore JAVA_HOME/jre/lib/security/cacerts -storepass changeit
(changeit ist das Standardpasswort für die cacerts-Datei)
Unter Windows müssen Sie den obigen Befehl möglicherweise von einer Eingabeaufforderung aus als Administrator ausführen und das „sudo“ am Anfang der Zeile entfernen.
Dann versuchen Sie:
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
Wenn Sie mehrere Java-Installationen haben, müssen Sie möglicherweise herausfinden, welche Sie für die Ausführung Ihrer Anwendung verwenden, und dies für die entsprechende Installation durchführen. Oder führen Sie es für alle Ihre Java-Installationen durch.
Unter macOS hat das Java Plugin seine cacerts-Datei unter /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security. Sie sollten das Charles Root-Zertifikat zu dieser cacerts-Datei hinzufügen, wenn Sie möchten, dass Applets, die in Ihrem Browser laufen, Charles vertrauen.
Python
Das Requests-Modul von Python schlägt mit einem Fehler fehl, wenn Sie versuchen, es mit SSL-Proxying in Charles zu verwenden:
requests.exceptions.SSLError: certificate
verify failed (_ssl.c:590)
Sie können Requests so konfigurieren, dass sie Ihrem Charles Root-Zertifikat vertrauen. Speichern Sie zunächst Ihr Zertifikat als .pem-Datei, indem Sie das Menü Hilfe > SSL-Proxying > Charles Root-Zertifikat speichern verwenden. Konfigurieren Sie dann Ihre Sitzung wie folgt:
from requests import Session
session = Session()
session.verify = "charles-ssl-proxying-certificate.pem"
Danke an Felipe Ferri für die Bereitstellung dieses Beispielcodes.