Certificats SSL

Charles génère ses propres certificats pour les sites, qu’il signe à l’aide d’un certificat racine Charles, généré de manière unique pour votre installation de Charles (à partir de la v3.10). Vous verrez un avertissement dans votre navigateur, ou autre application, lorsqu’il recevra ce certificat, car le certificat racine Charles ne figure pas dans votre liste de certificats racine de confiance. Voir Proxys SSL.

Vous pouvez choisir de faire confiance en permanence au certificat de chaque site au fur et à mesure que vous le rencontrez, auquel cas vous n’avez pas besoin de faire confiance au certificat racine Charles. Si vous souhaitez faire confiance automatiquement à chaque certificat émis par Charles, continuez avec ces instructions.

Les instructions suivantes concernent différents navigateurs et applications pour vous aider à faire confiance à votre certificat racine Charles afin de ne plus voir d’avertissements de certificat.

Notez que l’approche du certificat racine Charles a changé avec la version 3.10 de Charles, donc si vous avez déjà suivi cette procédure pour une ancienne version de Charles, vous devrez la refaire.

Windows / Internet Explorer

Dans Charles, allez dans le menu Aide et choisissez « Proxys SSL > Installer le certificat racine Charles ». Une fenêtre apparaîtra pour vous avertir que le certificat racine de l’AC n’est pas fiable.

Cliquez sur le bouton « Installer le certificat » pour lancer l’assistant d’importation de certificat. Le certificat doit être importé dans le magasin de certificats « Autorités de certification racine de confiance », donc passez outre la sélection automatique du magasin de certificats.

Complétez l’assistant et votre certificat racine Charles est maintenant installé. Vous devrez peut-être redémarrer IE avant que l’installation ne prenne effet.

Mozilla Firefox

Assurez-vous d’abord que Firefox est connecté à Charles. Vous devriez voir la navigation de Firefox être enregistrée dans Charles.

Visitez https://chls.pro/ssl dans Firefox. Une boîte de dialogue d’importation de certificat vous sera présentée. Cochez l’option « Trust this CA to identify websites » et terminez l’importation.

macOS

Dans Charles, allez dans le menu Aide et choisissez « SSL Proxying > Install Charles Root Certificate ». Keychain Access s’ouvrira. Trouvez l’entrée « Charles Proxy… », et double-cliquez pour obtenir des informations sur celle-ci. Développez la section « Trust », et à côté de « When using this certificate » changez-le de « Use System Defaults » à « Always Trust ». Fermez ensuite la fenêtre d’information sur le certificat, et vous serez invité à saisir votre mot de passe d’administrateur pour mettre à jour les paramètres de confiance du système.

Vous devrez peut-être quitter et rouvrir Safari pour voir le changement.

appareils iOS

  • Paramétrez votre appareil iOS pour qu’il utilise Charles comme proxy HTTP dans l’app Paramètres > Paramètres Wifi.
  • Ouverture de Safari et navigation vers https://chls.pro/ssl. Safari vous invitera à installer le certificat SSL.
  • Si vous êtes sur iOS 10.3 ou une version ultérieure, ouvrez l’app Paramètres et naviguez dans Général > À propos > Paramètres de confiance du certificat, et trouvez le certificat Charles Proxy, et activez-le pour activer la confiance totale pour celui-ci (Plus d’informations sur ce changement dans iOS 10).
  • Maintenant, vous devriez être en mesure d’accéder à des sites Web SSL avec Charles en utilisant le proxy SSL.

Charles prend en charge App Transport Security (ATS) à partir de la version 3.11.4.

simulateurs iOS

Quittez votre simulateur iOS. Lancez Charles et allez dans le menu d’aide. Choisissez l’élément « Proxys SSL > Installer le certificat racine Charles dans les simulateurs iOS ». Cela va installer votre certificat racine Charles dans tous vos simulateurs iOS. Maintenant, lorsque vous démarrez le simulateur iOS, vous devriez être en mesure d’accéder aux sites Web SSL avec Charles en utilisant le proxy SSL.

tvOS

Pour modifier les paramètres du proxy sur tvOS, vous devez utiliser Apple Configurator 2 depuis l’App Store.

  • Créer un nouveau profil
  • Ajouter une charge utile de proxy HTTP global
    • Type de proxy : Manuel
    • Remplir le serveur proxy et le port pour pointer vers Charles sur votre machine de bureau. Aucun nom d’utilisateur ou mot de passe n’est requis.
  • Ajouter le certificat racine de Charles dans une charge utile de certificats :
    • Dans Charles, dans le menu Aide > Proxys SSL, choisissez Enregistrer le certificat racine de Charles, en choisissant le format .cer dans la liste déroulante du type de fichier.
    • Dans Apple Configurator 2, ajoutez une charge utile de certificats en utilisant ce fichier.

Déployez le profil de configuration sur votre Apple TV.

Puis allez dans Paramètres >Généraux >À propos de >Certificats et activez la confiance pour le certificat Charles Proxy.

Android

A partir d’Android N, vous devez ajouter une configuration à votre application pour qu’elle fasse confiance aux certificats SSL générés par Charles SSL Proxying. Cela signifie que vous ne pouvez utiliser le proxy SSL qu’avec les apps que vous contrôlez.

Pour configurer votre app afin qu’elle fasse confiance à Charles, vous devez ajouter un fichier de configuration de sécurité réseau à votre app. Ce fichier peut remplacer la valeur par défaut du système, permettant à votre app de faire confiance aux certificats CA installés par l’utilisateur (par exemple, le certificat racine de Charles). Vous pouvez spécifier que cela ne s’applique que dans les builds de débogage de votre application, afin que les builds de production utilisent le profil de confiance par défaut.

Ajouter un fichier res/xml/network_security_config.xml à votre 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>

Puis ajouter une référence à ce fichier dans le manifeste de votre app, comme suit:

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>

Google Chrome

Sur macOS, veuillez suivre les instructions pour macOS ci-dessus. Ces instructions ne s’appliquent que sur Windows.

Dans Charles, allez dans le menu Aide et choisissez « Proxys SSL > Enregistrer le certificat racine de Charles ». Enregistrez le certificat racine sous forme de certificat binaire (.cer) sur votre bureau, ou à un endroit où vous pourrez facilement y accéder à l’étape suivante.

Dans Chrome, ouvrez les paramètres. Au bas de la page des paramètres, cliquez sur « Avancé » pour ouvrir la section avancée, puis cliquez sur le bouton « Gérer les certificats… ».

Allez à l’onglet « Autorités de certification racine de confiance » et cliquez sur « Importer… ».

Recherchez le fichier de certificat que vous avez enregistré à partir de Charles à l’étape précédente, puis cliquez sur Suivant et Terminer, en laissant les options par défaut, jusqu’à ce que vous terminiez l’importation. Chrome fera désormais toujours confiance aux certificats signés par Charles.

Après l’importation, vous pouvez supprimer le fichier de certificat que vous avez enregistré.

Applications Java

Vous pouvez ajouter votre certificat racine Charles à votre magasin de confiance de certificat racine dans Java, puis toutes les applications Java feront confiance aux certificats émis par Charles. Notez que vous devrez peut-être le faire à chaque fois que vous mettez à niveau votre installation Java.

Dans Charles, allez dans le menu Aide et choisissez « Proxys SSL >Enregistrer le certificat racine Charles ». Enregistrez le certificat racine en tant que certificat encodé en Base 64 (.pem) sur votre bureau, ou quelque part où vous pourrez facilement y accéder à l’étape suivante.

Maintenant trouvez le fichier cacerts, il devrait être dans votre $JAVA_HOME/jre/lib/security/cacerts, où $JAVA_HOME est votre répertoire de base java pour la JVM que vous utilisez.

Sur Linux, $JAVA_HOME sera probablement déjà défini. Sur macOS, s’il n’est pas défini, essayez d’exécuter /usr/libexec/java_home pour obtenir l’emplacement de votre JVM.

Puis tapez (en remplaçant $JAVA_HOME et le chemin approprié vers le certificat):

sudo keytool -import -alias charles -file ~/Desktop/charles-ssl-proxying-certificate.pem -keystore JAVA_HOME/jre/lib/security/cacerts -storepass changeit

(changeit est le mot de passe par défaut sur le fichier cacerts)

Sur Windows, vous devrez peut-être exécuter ce qui précède à partir d’une invite de commande en tant qu’administrateur, et supprimer le « sudo » au début de la ligne.

Essayez ensuite :

keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit

Si vous avez plusieurs installations Java, vous devrez peut-être déterminer celles que vous utilisez pour exécuter votre application et faire cela sur celle qui convient. Ou faites-le sur toutes vos installations Java.

Sur macOS, le plugin Java a son fichier cacerts à /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security. Vous devez ajouter le certificat racine Charles à ce fichier cacerts si vous voulez que les applets s’exécutant dans votre navigateur fassent confiance à Charles.

Python

Le module requests de Python échouera avec une erreur lorsque vous essayez de l’utiliser avec le proxy SSL dans Charles:

 requests.exceptions.SSLError: certificate
verify failed (_ssl.c:590)

Vous pouvez configurer les requests pour qu’ils fassent confiance à votre certificat racine Charles. Enregistrez d’abord votre certificat en tant que fichier .pem à l’aide du menu Aide > Proxys SSL > Enregistrer le certificat racine Charles. Configurez ensuite votre session comme suit :

from requests import Session
session = Session()
session.verify = "charles-ssl-proxying-certificate.pem"

Merci à Felipe Ferri pour avoir fourni cet exemple de code.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.