SSL Certificaten
Charles genereert zijn eigen certificaten voor sites, die het ondertekent met een Charles Root Certificaat, dat uniek is gegenereerd voor uw installatie van Charles (vanaf v3.10). U zult een waarschuwing zien in uw browser, of andere toepassing, wanneer het dat certificaat ontvangt omdat het Charles Root Certificate niet in uw lijst van vertrouwde root-certificaten staat. Zie SSL Proxying.
U kunt ervoor kiezen om het certificaat van elke site permanent te vertrouwen wanneer u het tegenkomt, in welk geval u het Charles Root Certificate niet hoeft te vertrouwen. Als u automatisch elk certificaat wilt vertrouwen dat door Charles wordt uitgegeven, gaat u verder met deze instructies.
De volgende instructies zijn voor verschillende browsers en toepassingen om u te helpen uw Charles-rootcertificaat te vertrouwen, zodat u geen certificaatwaarschuwingen meer ziet.
Merk op dat de aanpak van het Charles Root Certificate is veranderd met versie 3.10 van Charles, dus als u deze procedure al hebt gevolgd voor een oudere versie van Charles, moet u het opnieuw doen.
Windows / Internet Explorer
In Charles gaat u naar het Help-menu en kiest u “SSL Proxying > Install Charles Root Certificate”. Er verschijnt een venster dat u waarschuwt dat het CA Root certificaat niet vertrouwd wordt.
Klik op de “Certificaat installeren” knop om de certificaat import wizard te starten. Het certificaat moet worden geïmporteerd in de “Trusted Root Certification Authorities” certificaat opslag, dus overschrijf de automatische certificaat opslag selectie.
Voltooi de wizard en uw Charles Root Certificaat is nu geïnstalleerd. Het kan zijn dat u IE opnieuw moet starten voordat de installatie effect heeft.
Mozilla Firefox
Zorg er eerst voor dat Firefox is verbonden met Charles. U zou moeten zien dat het browsen vanuit Firefox wordt geregistreerd in Charles.
Bezoek https://chls.pro/ssl in Firefox. U zult een certificaat import dialoog te zien krijgen. Vink de optie “Vertrouw deze CA om websites te identificeren” aan en voltooi het importeren.
macOS
In Charles gaat u naar het Help-menu en kiest u “SSL Proxying > Installeer Charles Root Certificate”. Keychain Access wordt geopend. Zoek het “Charles Proxy…” item, en dubbel-klik om er informatie over te krijgen. Vouw de sectie “Vertrouwen” uit, en verander naast “Wanneer u dit certificaat gebruikt” van “Gebruik systeemdefaults” in “Altijd vertrouwen”. Sluit vervolgens het certificaat info venster, en u zult gevraagd worden om uw Administrator wachtwoord om de systeem vertrouwens instellingen bij te werken.
Het kan zijn dat u Safari moet afsluiten en heropenen om de verandering te zien.
iOS apparaten
- Stel uw iOS apparaat in om Charles te gebruiken als zijn HTTP proxy in de Instellingen app > Wifi instellingen.
- Open Safari en blader naar https://chls.pro/ssl. Safari zal u vragen om het SSL-certificaat te installeren.
- Als u op iOS 10.3 of hoger, open de Instellingen.app en navigeer naar Algemeen > Over > Certificate Trust Settings, en zoek het Charles Proxy-certificaat, en schakel het in om volledig vertrouwen voor het in te schakelen (Meer informatie over deze verandering in iOS 10).
- Nu zou u in staat moeten zijn om SSL-websites te openen met Charles met behulp van SSL Proxying.
Charles ondersteunt App Transport Security (ATS) vanaf de 3.11.4 release.
iOS Simulators
Verlaat uw iOS Simulator. Start Charles en ga naar het Help menu. Kies het “SSL Proxying > Installeer Charles Root Certificate in iOS Simulators” item. Hiermee wordt uw Charles Root Certificate in al uw iOS Simulators geïnstalleerd. Wanneer u nu de iOS Simulator start, zou u in staat moeten zijn om SSL websites met Charles te benaderen met behulp van SSL Proxying.
tvOS
Om de proxy instellingen op tvOS te wijzigen moet u Apple Configurator 2 uit de App Store gebruiken.
- Maak een nieuw profiel
- Voeg een Global HTTP Proxy payload
- Proxy Type: Manual
- Vul de proxy server en poort in om naar Charles op uw desktop machine te verwijzen. Er is geen gebruikersnaam of wachtwoord nodig.
- Voeg het Charles-rootcertificaat toe in een Certificates payload:
- In Charles kiest u in het menu Help > SSL Proxying de optie Charles-rootcertificaat opslaan, waarbij u het .cer-formaat kiest in de vervolgkeuzelijst voor het bestandstype.
- In Apple Configurator 2 voegt u een Certificates payload toe met dat bestand.
Deploy het configuratieprofiel op uw Apple TV.
Ga dan naar Instellingen > Algemeen > Over > Certificaten en schakel vertrouwen in voor het Charles Proxy-certificaat.
Android
Vanaf Android N moet u configuratie toevoegen aan uw app om deze de SSL-certificaten te laten vertrouwen die worden gegenereerd door Charles SSL Proxying. Dit betekent dat u SSL Proxying alleen kunt gebruiken met apps die u beheert.
Om uw app te configureren om Charles te vertrouwen, moet u een Network Security Configuration File aan uw app toevoegen. Dit bestand kan de standaardinstelling van het systeem opheffen, zodat uw app kan vertrouwen op door de gebruiker geïnstalleerde CA-certificaten (bijv. het Charles-rootcertificaat). U kunt aangeven dat dit alleen van toepassing is in debug builds van uw applicatie, zodat productie builds het standaard vertrouwensprofiel gebruiken.
Voeg een bestand res/xml/network_security_config.xml toe aan uw app:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Voeg vervolgens een verwijzing naar dit bestand toe in het manifest van uw app, als volgt:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
Google Chrome
Op macOS, volg de instructies voor macOS hierboven. Deze instructies zijn alleen van toepassing op Windows.
In Charles gaat u naar het Help-menu en kiest u “SSL Proxying > Save Charles Root Certificate”. Sla het root certificaat op als een binair certificaat (.cer) op uw bureaublad, of ergens waar u er gemakkelijk bij kunt in de volgende stap.
In Chrome, open de Instellingen. Klik onderaan de instellingenpagina op “Geavanceerd” om de geavanceerde sectie te openen en klik vervolgens op de knop “Certificaten beheren…”.
Ga naar het tabblad “Vertrouwde root-certificeringsinstanties” en klik op “Importeren…”.
Zoek het certificaatbestand dat u in de vorige stap van Charles hebt opgeslagen en klik vervolgens op Volgende en Voltooien, waarbij u de standaardopties laat staan, totdat u de import hebt voltooid. Chrome zal nu altijd certificaten vertrouwen die door Charles zijn ondertekend.
Na het importeren kunt u het certificaatbestand verwijderen dat u hebt opgeslagen.
Java-toepassingen
U kunt uw Charles Root Certificate toevoegen aan uw root certificate trust store in Java, dan zullen alle Java-toepassingen de certificaten vertrouwen die Charles uitgeeft. Het kan zijn dat u dit iedere keer moet doen als u uw Java-installatie upgradet.
In Charles gaat u naar het Help-menu en kiest u “SSL Proxying > Sla Charles Root Certificate op”. Sla het root certificaat op als een Base 64 gecodeerd certificaat (.pem) op uw bureaublad, of ergens waar u er gemakkelijk bij kunt in de volgende stap.
Nu het cacerts bestand vinden, het zou in uw $JAVA_HOME/jre/lib/security/cacerts moeten staan, waar $JAVA_HOME uw java home directory is voor de JVM die u gebruikt.
Op Linux, zal $JAVA_HOME waarschijnlijk al ingesteld zijn. Op macOS, als het niet is ingesteld, probeer dan /usr/libexec/java_home om de locatie van uw JVM te krijgen.
Type dan (in plaats van $JAVA_HOME en het juiste pad naar het certificaat):
sudo keytool -import -alias charles -file ~/Desktop/charles-ssl-proxying-certificate.pem -keystore JAVA_HOME/jre/lib/security/cacerts -storepass changeit
(changeit is het standaard wachtwoord op het cacerts bestand)
Op Windows moet je het bovenstaande misschien uitvoeren vanaf een commando prompt als Administrator, en de “sudo” aan het begin van de regel weghalen.
Probeer dan:
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
Als je meerdere Java installaties hebt, moet je misschien uitzoeken welke je gebruikt om je applicatie te draaien en dit op de juiste doen. Of doe het op al je Java installaties.
Op macOS heeft de Java Plugin zijn cacerts bestand in /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security. U moet het Charles root-certificaat aan dat cacerts-bestand toevoegen als u wilt dat applets die in uw browser draaien Charles vertrouwen.
Python
Python’s requests-module zal falen met een fout als u probeert om het te gebruiken met SSL Proxying in Charles:
requests.exceptions.SSLError: certificate
verify failed (_ssl.c:590)
U kunt requests configureren om uw Charles Root Certificate te vertrouwen. Sla eerst uw certificaat op als een .pem-bestand met behulp van het menu Help > SSL Proxying > Charles Root Certificate opslaan. Vervolgens configureert u uw Session als volgt:
from requests import Session
session = Session()
session.verify = "charles-ssl-proxying-certificate.pem"
Dank aan Felipe Ferri voor het leveren van deze voorbeeldcode.