Utilize o Dev Proxy com o WSL

De relance
Objetivo: Utilize o Dev Proxy com o Windows Subsystem para Linux (WSL)
Tempo: 15 minutos
Pré-requisitos:Configurar Dev Proxy, WSL instalado

Ao desenvolver aplicações em WSL (Windows Subsystem for Linux), tem duas opções para usar o Dev Proxy: executá-lo no seu host Windows ou dentro do WSL. Ambas as abordagens têm as suas vantagens dependendo do seu fluxo de trabalho de desenvolvimento.

A abordagem mais simples é instalar e executar Dev Proxy no Windows. O WSL usa automaticamente o proxy do sistema Windows, pelo que as aplicações a correr em WSL têm o seu tráfego intercetado pelo Dev Proxy sem configuração adicional.

Configurar o Proxy de Desenvolvimento no Windows

  1. Instala o Proxy de Desenvolvimento no Windows usando o Winget ou instalação manual.

  2. Inicie o Dev Proxy:

    devproxy
    
  3. Confie no certificado quando solicitado.

Usa o Proxy de Desenvolvimento do WSL

Quando o Proxy de Desenvolvimento corre como proxy do sistema no Windows (o comportamento padrão), as aplicações em WSL encaminham automaticamente o seu tráfego através dele.

Começa a tua candidatura no WSL como farias normalmente. O Proxy de desenvolvimento interceta pedidos HTTPS feitos pela sua aplicação.

Importante

Reiniciar o WSL depois de iniciar ou parar o Dev Proxy

O WSL armazena em cache as definições do proxy do sistema. Se iniciar o Dev Proxy depois de o WSL já estar a correr, ou se parar e reiniciar o Dev Proxy, precisa de reiniciar o WSL para que as alterações tenham efeito:

wsl --shutdown

Depois começa uma nova sessão de WSL.

Confie no certificado em WSL

Para que o Proxy de Desenvolvimento intercete o tráfego HTTPS, as aplicações em WSL precisam de confiar no certificado do Proxy de Desenvolvimento. Podes copiar o certificado do Windows ou exportá-lo usando a API Dev Proxy.

Opção A: Copiar o certificado do Windows

  1. No WSL, copie o certificado do Windows:

    cp /mnt/c/Users/<your-username>/.config/dev-proxy/rootCert.pfx ~/
    
  2. Exportar e instalar o certificado:

    # Export the certificate
    openssl pkcs12 -in ~/rootCert.pfx -clcerts -nokeys -out dev-proxy-ca.crt -passin pass:""
    # Install the certificate
    sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/
    # Update certificates
    sudo update-ca-certificates
    

Opção B: Usar a API do Proxy de Desenvolvimento

Enquanto o Proxy de Desenvolvimento estiver a correr no Windows, descarregue e instale o certificado:

# Download the certificate from Dev Proxy API
curl -o dev-proxy-ca.crt http://127.0.0.1:8897/proxy/rootCertificate?format=crt
# Install the certificate
sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/
# Update certificates
sudo update-ca-certificates

Observação

Algumas aplicações podem exigir configuração extra para confiar no armazenamento de certificados do sistema. Para Node.js aplicações, pode ser necessário definir NODE_TLS_REJECT_UNAUTHORIZED=0 para fins de desenvolvimento. Desativar a validação de certificados não é recomendado para código de produção.

Opção 2: Proxy de desenvolvimento dentro do WSL

Se preferires correr o Proxy de Desenvolvimento inteiramente dentro do WSL, instala-o usando o método de instalação do Linux e configura o proxy manualmente.

Instalar o Proxy de Desenvolvimento no WSL

Instale o Dev Proxy usando o script de configuração:

bash -c "$(curl -sL https://aka.ms/devproxy/setup.sh)"

Configure o proxy manualmente

Como o WSL não tem um ambiente gráfico de ambiente de trabalho, o Dev Proxy não pode registar-se automaticamente como proxy do sistema. Configura as tuas aplicações para usarem o proxy manualmente.

  1. Crie um ficheiro de configuração Dev Proxy com asSystemProxy definido para false:

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.4.0/rc.schema.json",
      "asSystemProxy": false,
      "plugins": [
        {
          "name": "RetryAfterPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
        },
        {
          "name": "GenericRandomErrorPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
          "configSection": "genericRandomErrorPlugin"
        }
      ],
      "urlsToWatch": [
        "https://jsonplaceholder.typicode.com/*"
      ],
      "genericRandomErrorPlugin": {
        "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.4.0/genericrandomerrorplugin.schema.json",
        "errorsFile": "devproxy-errors.json"
      },
      "rate": 50,
      "logLevel": "information"
    }
    
  2. Inicie o Dev Proxy:

    devproxy
    
  3. Confie no certificado:

    # Export Dev Proxy root certificate
    openssl pkcs12 -in ~/.config/dev-proxy/rootCert.pfx -clcerts -nokeys -out dev-proxy-ca.crt -passin pass:""
    # Install the certificate
    sudo cp dev-proxy-ca.crt /usr/local/share/ca-certificates/
    # Update certificates
    sudo update-ca-certificates
    
  4. Configura a tua aplicação para usar o proxy. Defina a variável de HTTPS_PROXY ambiente:

    export HTTPS_PROXY=http://127.0.0.1:8000
    

    Ou especifique-o ao executar a sua aplicação:

    HTTPS_PROXY=http://127.0.0.1:8000 node app.js
    

Sugestão

Para mais informações sobre como configurar o proxy para Node.js aplicações, veja Usar Proxy de Desenvolvimento com Node.js aplicações.

Comparação de abordagens

Característica Host Windows (Opção 1) Dentro da WSL (Opção 2)
Complexidade da configuração Simples Moderado
Gestão de certificados Cópia única a partir do Windows Exportação manual
Configuração do proxy Automático (proxy do sistema) Manual (HTTPS_PROXY)
Reinício da WSL é necessário Sim, ao alternar o proxy Não
Funciona com todas as aplicações WSL Yes Depende do suporte para proxy de aplicativo

Para a maioria dos cenários, correr Dev Proxy no Windows (Opção 1) é a abordagem recomendada devido à sua simplicidade e configuração automática do proxy.

Solução de problemas

Os pedidos não são interceptados ao usar o host do Windows

Se o Dev Proxy no Windows não interceptar pedidos do WSL:

  1. Reiniciar o WSL para atualizar as definições do proxy:

    wsl --shutdown
    
  2. Verifique se o Proxy de Desenvolvimento está a correr e registado como proxy do sistema.

  3. Verifica se o certificado Dev Proxy é confiável no WSL.

Erros de certificado

Se vir erros de certificado:

  1. Certifique-se de que instalou o certificado no WSL seguindo os passos em Confiar no certificado no WSL.
  2. Para Node.js aplicações, pode ser necessário configurar a aplicação para usar o agente proxy. Veja Utilizar o Proxy de Dev com aplicações Node.js.

Problemas de rede na WSL

O WSL 2 utiliza um adaptador de rede virtualizado. Se tiver problemas de rede:

  1. Assegure-se de que o seu firewall do Windows permite o Dev Proxy.
  2. Tente usar localhost em vez de 127.0.0.1 quando configurar o endereço proxy.