Certificati SSL
Charles genera i propri certificati per i siti, che firma usando un certificato radice Charles, che è generato unicamente per la tua installazione di Charles (dalla versione 3.10). Vedrai un avviso nel tuo browser, o in un’altra applicazione, quando riceverà quel certificato perché il Charles Root Certificate non è nella tua lista di certificati radice affidabili. Vedi Proxying SSL.
Puoi scegliere di fidarti permanentemente del certificato di ogni sito quando lo incontri, nel qual caso non hai bisogno di fidarti del Charles Root Certificate. Se vuoi fidarti automaticamente di ogni certificato emesso da Charles, continua con queste istruzioni.
Le seguenti istruzioni sono per diversi browser e applicazioni per aiutarti a fidarti del tuo Charles Root Certificate in modo da non vedere più avvisi di certificati.
Nota che l’approccio al Charles Root Certificate è cambiato con la versione 3.10 di Charles, quindi se hai già seguito questa procedura per una versione precedente di Charles dovrai rifarla.
Windows / Internet Explorer
In Charles vai al menu Help e scegli “SSL Proxying > Install Charles Root Certificate”. Apparirà una finestra che ti avvertirà che il certificato CA Root non è affidabile.
Clicca sul pulsante “Installa certificato” per lanciare la procedura guidata di importazione del certificato. Il certificato deve essere importato nel negozio di certificati “Trusted Root Certification Authorities”, quindi annulla la selezione automatica del negozio di certificati.
Completa la procedura guidata e il tuo certificato radice Charles è ora installato. Potrebbe essere necessario riavviare IE prima che l’installazione abbia effetto.
Mozilla Firefox
Prima di tutto assicurati che Firefox sia connesso a Charles. Dovresti vedere la navigazione da Firefox registrata in Charles.
Visita https://chls.pro/ssl in Firefox. Ti verrà presentata una finestra di dialogo di importazione del certificato. Spunta l’opzione “Trust this CA to identify websites” e completa l’importazione.
macOS
In Charles vai al menu Help e scegli “SSL Proxying > Install Charles Root Certificate”. Si aprirà Keychain Access. Trova la voce “Charles Proxy…” e fai doppio clic per ottenere informazioni su di essa. Espandi la sezione “Trust”, e accanto a “When using this certificate” cambiala da “Use System Defaults” a “Always Trust”. Poi chiudi la finestra delle informazioni sul certificato, e ti verrà richiesta la tua password di amministratore per aggiornare le impostazioni di fiducia del sistema.
Potresti dover uscire e riaprire Safari per vedere la modifica.
Dispositivi iOS
- Imposta il tuo dispositivo iOS per utilizzare Charles come proxy HTTP nell’app Impostazioni > Impostazioni Wifi.
- Apri Safari e vai a https://chls.pro/ssl. Safari ti chiederà di installare il certificato SSL.
- Se sei su iOS 10.3 o successivo, apri l’app Impostazioni e vai su Generale > Info > Impostazioni fiducia certificato, e trova il certificato Charles Proxy, e attivalo per abilitare la piena fiducia per esso (maggiori informazioni su questo cambiamento in iOS 10).
- Ora dovresti essere in grado di accedere ai siti web SSL con Charles usando SSL Proxying.
Charles supporta App Transport Security (ATS) a partire dalla versione 3.11.4.
Simulatori iOS
Chiudi il tuo simulatore iOS. Lancia Charles e vai al menu Aiuto. Scegli la voce “SSL Proxying > Install Charles Root Certificate in iOS Simulators”. Questo installerà il vostro Charles Root Certificate in tutti i vostri simulatori iOS. Ora, quando avvii il simulatore iOS, dovresti essere in grado di accedere ai siti web SSL con Charles utilizzando SSL Proxying.
tvOS
Per modificare le impostazioni proxy su tvOS devi utilizzare Apple Configurator 2 dall’App Store.
- Crea un nuovo profilo
- Aggiungi un payload Proxy HTTP globale
- Tipo Proxy: Manual
- Compila il server proxy e la porta per puntare a Charles sulla tua macchina desktop. Non è richiesto alcun nome utente o password.
- Aggiungi il certificato radice Charles in un payload di certificati:
- In Charles, dal menu Help > SSL Proxying scegli Save Charles Charles Root Certificate, scegliendo il formato .cer dal dropdown filetype.
- In Apple Configurator 2, aggiungi un payload di certificati usando quel file.
Distribuisci il profilo di configurazione sulla tua Apple TV.
Poi vai in Impostazioni > Generali > Informazioni > Certificati e abilita la fiducia per il certificato Charles Proxy.
Android
A partire da Android N, è necessario aggiungere la configurazione alla tua app per far sì che si fidi dei certificati SSL generati da Charles SSL Proxying. Questo significa che puoi usare SSL Proxying solo con le app che controlli.
Per configurare la tua app affinché si fidi di Charles, devi aggiungere un file di configurazione della sicurezza di rete alla tua app. Questo file può sovrascrivere l’impostazione predefinita del sistema, consentendo all’applicazione di fidarsi dei certificati CA installati dall’utente (ad esempio il certificato radice Charles). Puoi specificare che questo si applica solo nelle build di debug della tua applicazione, in modo che le build di produzione usino il profilo di fiducia predefinito.
Aggiungi un file res/xml/network_security_config.xml alla tua 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>
Poi aggiungi un riferimento a questo file nel manifest della tua app, come segue:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
Google Chrome
Su macOS, segui le istruzioni per macOS sopra. Queste istruzioni sono valide solo su Windows.
In Charles vai al menu Aiuto e scegli “SSL Proxying > Salva certificato radice Charles”. Salva il certificato radice come certificato binario (.cer) sul tuo desktop, o da qualche parte dove puoi accedervi facilmente nel passaggio successivo.
In Chrome, apri le Impostazioni. In fondo alla pagina delle impostazioni, fai clic su “Avanzate” per aprire la sezione avanzata, quindi fai clic sul pulsante “Gestisci certificati…”.
Vai alla scheda “Trusted Root Certification Authorities” e fai clic su “Importa…”.
Trova il file del certificato che hai salvato da Charles nel passaggio precedente, quindi fai clic su Avanti e Fine, lasciando le opzioni predefinite, fino a completare l’importazione. Chrome ora si fiderà sempre dei certificati firmati da Charles.
Dopo l’importazione puoi cancellare il file del certificato che hai salvato.
Applicazioni Java
Puoi aggiungere il tuo certificato radice Charles al tuo negozio di fiducia dei certificati radice in Java, quindi tutte le applicazioni Java si fideranno dei certificati rilasciati da Charles. Nota che potrebbe essere necessario farlo ogni volta che aggiorni la tua installazione Java.
In Charles vai al menu Aiuto e scegli “SSL Proxying > Salva certificato radice Charles”. Salva il certificato radice come certificato codificato Base 64 (.pem) sul tuo desktop, o da qualche parte dove puoi accedere facilmente al prossimo passo.
Ora trova il file cacerts, dovrebbe essere nella tua $JAVA_HOME/jre/lib/security/cacerts, dove $JAVA_HOME è la tua directory java home per la JVM che stai usando.
Su Linux, $JAVA_HOME sarà probabilmente già impostato. Su macOS, se non è impostato, prova ad eseguire /usr/libexec/java_home per ottenere la posizione della tua JVM.
Poi scrivi (sostituendo $JAVA_HOME e il percorso appropriato al certificato):
sudo keytool -import -alias charles -file ~/Desktop/charles-ssl-proxying-certificate.pem -keystore JAVA_HOME/jre/lib/security/cacerts -storepass changeit
(changeit è la password di default sul file cacerts)
Su Windows potresti aver bisogno di eseguire quanto sopra da un prompt dei comandi come Amministratore, e rimuovere il “sudo” all’inizio della linea.
Poi prova:
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
Se hai più installazioni Java potresti aver bisogno di capire quali stai usando per eseguire la tua applicazione e fare questo su quella appropriata. Oppure fallo su tutte le tue installazioni Java.
Su macOS il plugin Java ha il suo file cacerts in /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security. Dovresti aggiungere il certificato radice di Charles a quel file cacerts se vuoi che le applet in esecuzione nel tuo browser si fidino di Charles.
Python
Il modulo requests di Python fallirà con un errore quando proverai ad usarlo con il proxy SSL in Charles:
requests.exceptions.SSLError: certificate
verify failed (_ssl.c:590)
Puoi configurare le richieste per fidarsi del tuo certificato radice Charles. Prima salva il tuo certificato come file .pem usando il menu Help > SSL Proxying > Save Charles Root Certificate. Poi configura la tua sessione come segue:
from requests import Session
session = Session()
session.verify = "charles-ssl-proxying-certificate.pem"
Grazie a Felipe Ferri per aver fornito questo codice di esempio.