Certificados SSL
Charles genera sus propios certificados para los sitios, que firma utilizando un Certificado Raíz de Charles, que se genera de forma exclusiva para su instalación de Charles (a partir de la v3.10). Verá una advertencia en su navegador, u otra aplicación, cuando reciba ese certificado porque el certificado raíz de Charles no está en su lista de certificados raíz de confianza. Consulte Proxy SSL.
Puede optar por confiar permanentemente en el certificado de cada sitio cuando lo encuentre, en cuyo caso no necesita confiar en el certificado raíz de Charles. Si desea confiar automáticamente en cada certificado emitido por Charles, continúe con estas instrucciones.
Las siguientes instrucciones son para diferentes navegadores y aplicaciones para ayudarle a confiar en su Certificado Raíz de Charles para que ya no vea advertencias de certificados.
Tenga en cuenta que el enfoque del Certificado Raíz de Charles cambió con la versión 3.10 de Charles, por lo que si ya ha seguido este procedimiento para una versión anterior de Charles tendrá que hacerlo de nuevo.
Windows / Internet Explorer
En Charles vaya al menú Ayuda y elija «Proxy SSL > Instalar el Certificado Raíz de Charles». Aparecerá una ventana advirtiéndole de que el certificado raíz de la CA no es de confianza.
Haga clic en el botón «Instalar certificado» para iniciar el asistente de importación de certificados. El certificado debe importarse en el almacén de certificados de «Autoridades de certificación raíz de confianza», así que anule la selección automática del almacén de certificados.
Complete el asistente y su certificado raíz de Charles ya está instalado. Es posible que tenga que reiniciar IE antes de que la instalación tenga efecto.
Mozilla Firefox
Primero asegúrese de que Firefox está conectado a Charles. Debería ver que la navegación desde Firefox se registra en Charles.
Visite https://chls.pro/ssl en Firefox. Se le presentará un diálogo de importación de certificados. Marque la opción «Confiar en esta CA para identificar sitios web» y complete la importación.
macOS
En Charles vaya al menú Ayuda y elija «Proxy SSL > Instalar certificado raíz de Charles». Se abrirá el acceso al llavero. Busca la entrada «Charles Proxy…» y haz doble clic para obtener información sobre ella. Expanda la sección «Confianza», y al lado de «Al usar este certificado» cambie de «Usar los valores predeterminados del sistema» a «Confiar siempre». A continuación, cierre la ventana de información del certificado, y se le pedirá su contraseña de administrador para actualizar la configuración de confianza del sistema.
Es posible que tenga que salir y volver a abrir Safari para ver el cambio.
Dispositivos iOS
- Configure su dispositivo iOS para que utilice Charles como su proxy HTTP en la aplicación Ajustes > Ajustes Wifi.
- Abra Safari y navegue hasta https://chls.pro/ssl. Safari le pedirá que instale el certificado SSL.
- Si está en iOS 10.3 o posterior, abra la app Ajustes.y navegue hasta General > Acerca de > Ajustes de confianza de certificados, y busque el certificado Proxy de Charles, y actívelo para habilitar la confianza total para él (Más información sobre este cambio en iOS 10).
- Ahora debería poder acceder a sitios web SSL con Charles utilizando el Proxy SSL.
Charles soporta App Transport Security (ATS) a partir de la versión 3.11.4.
Simuladores de iOS
Salga de su Simulador de iOS. Inicie Charles y vaya al menú de ayuda. Elija el elemento «Proxy SSL > Instalar el certificado raíz de Charles en los simuladores de iOS». Esto instalará su certificado raíz de Charles en todos sus simuladores de iOS. Ahora, cuando inicie el Simulador iOS, debería poder acceder a los sitios web SSL con Charles utilizando el Proxy SSL.
tvOS
Para cambiar la configuración del proxy en tvOS debe utilizar Apple Configurator 2 desde la App Store.
- Crear un nuevo perfil
- Añadir una carga útil de Proxy HTTP global
- Tipo de proxy: Manual
- Rellene el servidor proxy y el puerto para apuntar a Charles en su máquina de escritorio. No se requiere nombre de usuario ni contraseña.
- Añada el certificado raíz de Charles en una carga útil de certificados:
- En Charles, desde el menú Ayuda >Proxy SSL elija Guardar certificado raíz de Charles, eligiendo el formato .cer en el menú desplegable de tipo de archivo.
- En Apple Configurator 2, añada una carga útil de certificados utilizando ese archivo.
Despliega el perfil de configuración en tu Apple TV.
A continuación, entra en Ajustes > General > Acerca de > Certificados y habilita la confianza para el certificado Charles Proxy.
Android
A partir de Android N, tienes que añadir una configuración a tu app para que confíe en los certificados SSL generados por Charles SSL Proxying. Esto significa que sólo puedes utilizar el Proxy SSL con las apps que controlas.
Para configurar tu app para que confíe en Charles, necesitas añadir un Archivo de Configuración de Seguridad de Red a tu app. Este archivo puede anular el valor predeterminado del sistema, permitiendo que su app confíe en los certificados CA instalados por el usuario (por ejemplo, el certificado raíz de Charles). Puedes especificar que esto sólo se aplique en las compilaciones de depuración de tu aplicación, de modo que las compilaciones de producción utilicen el perfil de confianza predeterminado.
Añade un archivo res/xml/network_security_config.xml a tu aplicación:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
A continuación, añade una referencia a este archivo en el manifiesto de tu aplicación, de la siguiente manera:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
Google Chrome
En macOS, sigue las instrucciones para macOS indicadas anteriormente. Estas instrucciones sólo se aplican en Windows.
En Charles vaya al menú de Ayuda y elija «Proxy SSL > Guardar certificado raíz de Charles». Guarde el certificado raíz como un certificado binario (.cer) en su escritorio, o en algún lugar donde pueda acceder fácilmente a él en el siguiente paso.
En Chrome, abra la Configuración. En la parte inferior de la página de configuración, haz clic en «Avanzadas» para abrir la sección avanzada y, a continuación, haz clic en el botón «Administrar certificados…».
Ve a la pestaña «Autoridades de certificación raíz de confianza» y haz clic en «Importar…».
Busca el archivo de certificado que guardaste de Charles en el paso anterior y, a continuación, haz clic en Siguiente y en Finalizar, dejando las opciones predeterminadas, hasta completar la importación. Ahora Chrome siempre confiará en los certificados firmados por Charles.
Después de la importación puede eliminar el archivo de certificado que guardó.
Aplicaciones Java
Puede añadir su certificado raíz de Charles a su almacén de confianza de certificados raíz en Java, entonces todas las aplicaciones Java confiarán en los certificados que emita Charles. Tenga en cuenta que es posible que tenga que hacer esto cada vez que actualice su instalación de Java.
En Charles vaya al menú de ayuda y elija «Proxy SSL >Guardar el certificado raíz de Charles». Guarde el certificado raíz como un certificado codificado en Base 64 (.pem) en su escritorio, o en algún lugar donde pueda acceder fácilmente a él en el siguiente paso.
Ahora encuentre el archivo cacerts, debería estar en su $JAVA_HOME/jre/lib/security/cacerts, donde $JAVA_HOME es su directorio de inicio de java para la JVM que está utilizando.
En Linux, $JAVA_HOME probablemente ya estará configurado. En macOS, si no está configurado, intente ejecutar /usr/libexec/java_home para obtener la ubicación de su JVM.
Entonces escriba (sustituyendo $JAVA_HOME y la ruta apropiada al certificado):
sudo keytool -import -alias charles -file ~/Desktop/charles-ssl-proxying-certificate.pem -keystore JAVA_HOME/jre/lib/security/cacerts -storepass changeit
(changeit es la contraseña por defecto en el archivo cacerts)
En Windows puede que tenga que ejecutar lo anterior desde un símbolo del sistema como Administrador, y eliminar el «sudo» al principio de la línea.
Entonces intenta:
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
Si tienes varias instalaciones de Java puede que tengas que averiguar cuáles estás usando para ejecutar tu aplicación y hacer esto en la apropiada. O hacerlo en todas sus instalaciones de Java.
En macOS el plugin de Java tiene su archivo cacerts en /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security. Debe añadir el certificado raíz de Charles a ese archivo cacerts si quiere que los applets que se ejecutan en su navegador confíen en Charles.
Python
El módulo de peticiones de Python fallará con un error cuando intente utilizarlo con el proxy SSL en Charles:
requests.exceptions.SSLError: certificate
verify failed (_ssl.c:590)
Puede configurar las peticiones para que confíen en su certificado raíz de Charles. Primero guarde su certificado como un archivo .pem utilizando el menú Ayuda > Proxy SSL > Guardar certificado raíz de Charles. Luego configure su Sesión como sigue:
from requests import Session
session = Session()
session.verify = "charles-ssl-proxying-certificate.pem"
Gracias a Felipe Ferri por proporcionar este código de ejemplo.