SL Certificados
Charles gera os seus próprios certificados para sites, que assina usando um Certificado Raiz de Charles, que é gerado exclusivamente para a sua instalação de Charles (a partir da v3.10). Você verá um aviso em seu navegador, ou outra aplicação, quando receber esse certificado, porque o Charles Root Certificate não está em sua lista de certificados raiz confiáveis. Veja SSL Proxying.
Você pode escolher confiar permanentemente no certificado de cada site à medida que você o encontrar, neste caso você não precisa confiar no Certificado Raiz de Charles. Se você gostaria de confiar automaticamente em cada certificado emitido por Charles, continue com estas instruções.
As instruções a seguir são para diferentes navegadores e aplicativos para ajudá-lo a confiar no seu Certificado Raiz de Charles para que você não veja mais avisos de certificado.
Note que a abordagem do Certificado Raiz de Charles mudou com a versão 3.10 de Charles, então se você já seguiu este procedimento para uma versão mais antiga de Charles você precisará fazê-lo novamente.
Windows / Internet Explorer
Em Charles vá para o menu Ajuda e escolha “SSL Proxying > Instale o Certificado Raiz de Charles”. Uma janela irá aparecer avisando que o certificado Raiz CA não é confiável.
Clique no botão “Install Certificate” para iniciar o assistente de importação de certificados. O certificado deve ser importado para a loja de certificados “Trusted Root Certification Authorities”, portanto, substitua a seleção automática da loja de certificados.
Completar o assistente e o seu Certificado Raiz de Charles está agora instalado. Você pode precisar reiniciar o IE antes que a instalação tenha efeito.
Mozilla Firefox
Primeiro certifique-se de que o Firefox está conectado ao Charles. Você deve ver a navegação a partir do Firefox sendo gravada em Charles.
Visit https://chls.pro/ssl no Firefox. Ser-lhe-á apresentado um diálogo de importação de certificados. Marque a opção “Confie nesta CA para identificar websites” e complete a importação.
macOS
Em Charles vá ao menu Ajuda e escolha “SSL Proxying >Instalar Certificado Raiz de Charles”. O Keychain Access será aberto. Encontre a entrada “Charles Proxy…”, e dê um duplo clique para obter informações sobre ela. Expanda a secção “Trust”, e ao lado de “When using this certificate” mude-a de “Use System Defaults” para “Always Trust”. Então feche a janela de informações do certificado e você será solicitado a atualizar a senha do administrador para atualizar as configurações de confiança do sistema.
Pode ser necessário sair e reabrir o Safari para ver a alteração.
dispositivos iOS
- Configure seu dispositivo iOS para usar Charles como seu proxy HTTP no aplicativo Settings app > Wifi settings.
- Abra o Safari e navegue até https://chls.pro/ssl. O Safari irá solicitar a instalação do certificado SSL.
- Se você estiver no iOS 10.3 ou posterior, abra o aplicativo Settings.app e navegue até General > About > Certificate Trust Settings, e encontre o certificado Charles Proxy, e ligue-o para permitir total confiança nele (Mais informações sobre esta alteração no iOS 10).
- Agora você deve ser capaz de acessar sites SSL com Charles usando Proxying SSL.
Charles suporta App Transport Security (ATS) a partir da versão 3.11.4.
Simuladores iOS
Sai do seu Simulador iOS. Inicie Charles e vá para o menu Ajuda. Escolha o item “SSL Proxying > Instale o Certificado Raiz de Charles nos Simuladores iOS”. Isto irá instalar o seu Certificado Raiz de Charles em todos os seus Simuladores iOS. Agora quando você iniciar o Simulador iOS, você deve ser capaz de acessar sites SSL com Charles usando Proxying SSL.
tvOS
Para alterar as configurações de proxy no tvOS você deve usar o Apple Configurator 2 da App Store.
- Criar um Novo Perfil
- Adicionar uma carga útil de Proxy HTTP Global
- Tipo de Proxy: Manual
- Preencher no servidor proxy e porta para apontar para Charles na sua máquina desktop. Nenhum nome de usuário ou senha é necessário.
- Adicionar o Certificado Raiz de Charles em um payload de Certificados:
- Em Charles, no menu Ajuda >Proxying SSL escolha Salvar Certificado Raiz de Charles Charles, escolhendo o formato .cer no menu suspenso do tipo de arquivo.
- No Apple Configurator 2, adicione um payload de Certificados usando esse arquivo.
Disponha o perfil de configuração na sua Apple TV.
Então vá em Configurações > Geral > Sobre > Certificados e habilite a confiança para o certificado Charles Proxy.
Android
As do Android N, você precisa adicionar a configuração ao seu aplicativo para ter confiança nos certificados SSL gerados pelo Charles SSL Proxying. Isso significa que você só pode usar o Proxying SSL com aplicativos que você controla.
Para configurar seu aplicativo para confiar no Charles, você precisa adicionar um Arquivo de Configuração de Segurança de Rede ao seu aplicativo. Esse arquivo pode substituir o padrão do sistema, permitindo que seu aplicativo confie nos certificados CA instalados pelo usuário (por exemplo, o Charles Root Certificate). Você pode especificar que isso só se aplica em compilações de depuração da sua aplicação, para que as compilações de produção usem o perfil de confiança padrão.
Adicionar um arquivo res/xml/network_security_config.xml à sua aplicação:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
Então adicione uma referência a esse arquivo no manifesto da sua aplicação, como segue:
<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
<application android:networkSecurityConfig="@xml/network_security_config" ... >
...
</application>
</manifest>
Google Chrome
Em macOS, por favor siga as instruções para macOS acima. Estas instruções só se aplicam no Windows.
Em Charles vá ao menu Ajuda e escolha “SSL Proxying > Save Charles Root Certificate”. Salve o certificado raiz como um Certificado Binário (.cer) no seu desktop, ou em algum lugar onde você possa acessá-lo facilmente no próximo passo.
No Chrome, abra as Configurações. Na parte inferior da página de configurações, clique em “Avançado” para abrir a seção avançada, depois clique no botão “Gerenciar certificados…”.
Vá para a aba “Autoridades de Certificação Raiz Confiáveis” e clique em “Importar…”.
Encontrar o arquivo de certificado que você salvou do Charles no passo anterior, depois clique em Próximo e Terminar, deixando as opções padrão, até completar a importação. O Chrome irá agora confiar sempre nos certificados assinados por Charles.
Depois de importar pode apagar o ficheiro de certificado que guardou.
Aplicações Java
Pode adicionar o seu Certificado Raiz de Charles à sua loja de confiança de certificados raiz em Java, depois todas as aplicações Java irão confiar nos certificados que o Charles emite. Note que você pode precisar fazer isso cada vez que atualizar sua instalação Java.
Em Charles vá para o menu Ajuda e escolha “SSL Proxying > Save Charles Root Certificate”. Salve o certificado root como um certificado codificado Base 64 (.pem) em seu desktop, ou em algum lugar onde você possa facilmente acessá-lo no próximo passo.
Agora encontre o arquivo cacerts, ele deve estar no seu $JAVA_HOME/jre/lib/security/cacerts, onde $JAVA_HOME é seu diretório home java para o JVM que você está usando.
No Linux, $JAVA_HOME provavelmente já estará configurado. No macOS, se não estiver configurado, tente executar /usr/libexec/java_home para obter a localização do seu JVM.
Então digite (substituindo $JAVA_HOME e o caminho apropriado para o certificado):
sudo keytool -import -alias charles -file ~/Desktop/charles-ssl-proxying-certificate.pem -keystore JAVA_HOME/jre/lib/security/cacerts -storepass changeit
(changeit é a senha padrão no arquivo cacerts)
No Windows você pode precisar executar o acima a partir de um prompt de comando como Administrador, e remover o “sudo” no início da linha.
Então tente:
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit
Se você tiver várias instalações Java você pode precisar descobrir quais você está usando para executar sua aplicação e fazer isso no apropriado. Ou faça-o em todas as suas instalações Java.
Em macOS o Plugin Java tem seu arquivo cacerts em /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/lib/security. Você deve adicionar o certificado raiz de Charles a esse arquivo de cacerts se você quiser que applets rodando no seu navegador confiem em Charles.
Python
O módulo de requisições de Python falhará com um erro quando você tentar usá-lo com Proxying SSL em Charles:
requests.exceptions.SSLError: certificate
verify failed (_ssl.c:590)
Você pode configurar as requisições para confiar no seu Certificado Raiz de Charles. Primeiro salve seu certificado como um arquivo .pem usando a Ajuda > Proxying SSL > Save Charles Root Certificate menu. Depois configure sua Sessão da seguinte forma:
from requests import Session
session = Session()
session.verify = "charles-ssl-proxying-certificate.pem"
Agradeço a Felipe Ferri por fornecer este código de exemplo.