Uso del proxy de desarrollo con WSL

De un vistazo
Objetivo: Uso del proxy de desarrollo con el Subsistema de Windows para Linux (WSL)
Tiempo: 15 minutos
Requisitos previos:Configuración del proxy de desarrollo, WSL instalado

Al desarrollar aplicaciones en WSL (Subsistema de Windows para Linux), tiene dos opciones para usar el proxy de desarrollo: ejecutarlo en el host de Windows o dentro de WSL. Ambos enfoques tienen sus ventajas en función del flujo de trabajo de desarrollo.

El enfoque más sencillo es instalar y ejecutar proxy de desarrollo en Windows. Con el proxy automático de WSL y el modo de red reflejado, WSL usa el proxy del sistema Windows, por lo que las aplicaciones que se ejecutan en WSL tienen su tráfico interceptado por Dev Proxy sin configurar el proxy en WSL.

Configurar la red de WSL

Dev Proxy se registra como el proxy del sistema Windows en una dirección localhost (127.0.0.1:8000 de forma predeterminada). Para que las aplicaciones de WSL usen este proxy, habilite la siguiente configuración en la sección [wsl2] del archivo de configuración de WSL ubicado en %UserProfile%\.wslconfig Windows:

[wsl2]
networkingMode=mirrored
autoProxy=true
Setting Description
networkingMode=mirrored Refleja las interfaces de red de Windows en Linux, lo que permite a las aplicaciones de WSL conectarse a servidores que se ejecutan en Windows, como Dev Proxy, mediante 127.0.0.1. Requiere Windows 11 versión 22H2 o posterior. El valor por defecto es nat.
autoProxy=true Hace que WSL use la configuración del proxy HTTP de Windows, de modo que el proxy configurado en Windows se establezca automáticamente en WSL. Disponible en Windows 11. Habilitado de forma predeterminada.

Después de cambiar el .wslconfig archivo, reinicie WSL para que los cambios surtan efecto:

wsl --shutdown

Nota:

En el modo de red NAT predeterminado, las aplicaciones de WSL no se pueden conectar a Dev Proxy en Windows mediante 127.0.0.1. Si no puede usar el modo de red reflejado, ejecute dev Proxy dentro de WSL en su lugar. Para obtener más información, vea Opción 2: Proxy de desarrollo dentro de WSL.

Para obtener más información, consulte Acceso a aplicaciones de red con WSL y configuración avanzada en WSL.

Configuración del proxy de desarrollo en Windows

  1. Instale dev Proxy en Windows mediante winget o instalación manual.

  2. Iniciar proxy de desarrollo:

    devproxy
    
  3. Confíe en el certificado cuando se le solicite.

Uso de Dev Proxy desde WSL

Cuando Dev Proxy se ejecuta como proxy del sistema en Windows (el comportamiento predeterminado) y ha configurado la red de WSL, las aplicaciones de WSL enrutan automáticamente su tráfico a través de él.

Inicie la aplicación en WSL como lo haría normalmente. El proxy de desarrollo intercepta las solicitudes HTTPS realizadas por las aplicaciones que respetan la configuración del proxy.

Importante

Reinicie WSL después de iniciar o detener Dev Proxy

WSL lee la configuración del proxy de Windows cuando se inicia. Si inicia el proxy de desarrollo después de que WSL ya se esté ejecutando, o si detiene y reinicia el proxy de desarrollo, debe reiniciar WSL para que los cambios surtan efecto:

wsl --shutdown

A continuación, inicie una nueva sesión de WSL.

Confiar en el certificado en WSL

Para que el proxy de desarrollo intercepte el tráfico HTTPS, las aplicaciones de WSL deben confiar en el certificado de proxy de desarrollo. Puede copiar el certificado de Windows o exportarlo mediante la API de proxy de desarrollo.

Opción A: Copiar el certificado de Windows

  1. En WSL, copie el certificado de Windows:

    cp "/mnt/c/Users/<your-username>/AppData/Local/Programs/Dev Proxy/rootCert.pfx" ~/
    
  2. Exporte e instale el 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
    

Opción B: Uso de la API de proxy de desarrollo

La API de Dev Proxy requiere un token de portador. Mientras Dev Proxy se esté ejecutando en Windows, obtén el token ejecutando el comando api token en un terminal de Windows:

devproxy api token

A continuación, en WSL, descargue e instale el certificado. Reemplace <token> por el token que recuperó:

# Download the certificate from Dev Proxy API
curl -H "Authorization: Bearer <token>" -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

Nota:

Algunas aplicaciones pueden requerir una configuración adicional para confiar en el almacén de certificados del sistema. Para Node.js aplicaciones, es posible que deba establecerse NODE_TLS_REJECT_UNAUTHORIZED=0 con fines de desarrollo. No se recomienda deshabilitar la validación de certificados para el código de producción.

Opción 2: Proxy de desarrollo dentro de WSL

Si prefiere ejecutar el proxy de desarrollo completamente dentro de WSL, instálelo mediante el método de instalación de Linux y configure el proxy manualmente.

Instalación del proxy de desarrollo en WSL

El script de instalación requiere unzip para extraer Dev Proxy. Las distribuciones de WSL nuevas, como Ubuntu, no incluyen esto de forma predeterminada. Instale unzip:

sudo apt update
sudo apt install unzip

Instale el proxy de desarrollo mediante el script de instalación:

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

Configuración manual del proxy

Dado que WSL no dispone de un entorno de escritorio gráfico, Dev Proxy no puede registrarse automáticamente como proxy del sistema. Configure las aplicaciones para que usen el proxy manualmente.

  1. Cree un archivo de configuración del proxy de desarrollo con asSystemProxy establecido en false:

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.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/v4.0.0/genericrandomerrorplugin.schema.json",
        "errorsFile": "devproxy-errors.json",
        "rate": 50
      },
      "logLevel": "information"
    }
    
  2. Iniciar proxy de desarrollo:

    devproxy
    
  3. Confíe en el 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. Configure la aplicación para que use el proxy. Establezca la variable de entorno HTTPS_PROXY.

    export HTTPS_PROXY=http://127.0.0.1:8000
    

    O especifíquelo al ejecutar la aplicación:

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

Sugerencia

Para obtener más información sobre cómo configurar el proxy para aplicaciones de Node.js, consulte Uso del proxy de desarrollo con aplicaciones de Node.js.

Comparación de enfoques

Característica Host de Windows (opción 1) Dentro de WSL (opción 2)
Complejidad de la instalación Sencillo Moderado
Requirements Windows 11 22H2 o posterior, modo de red reflejado de WSL None
Administración de certificados Copia única desde Windows Exportación manual
Configuración de proxy Automático (proxy automático de WSL) Manual (HTTPS_PROXY)
Se requiere reiniciar WSL Sí, al activar/desactivar el proxy No
Funciona con todas las aplicaciones WSL Sí Depende del soporte de proxy de la aplicación

En la mayoría de los escenarios, la ejecución del proxy de desarrollo en Windows (opción 1) es el enfoque recomendado debido a su simplicidad y configuración automática del proxy.

Solución de problemas

Las solicitudes no se interceptan al usar el host de Windows

Si el proxy de desarrollo en Windows no intercepta las solicitudes de WSL:

  1. Compruebe que networkingMode=mirrored y autoProxy=true estén establecidos en la sección [wsl2] de su archivo .wslconfig. Para obtener más información, consulte Configuración de redes WSL.

  2. Reinicie WSL para actualizar la configuración del proxy:

    wsl --shutdown
    
  3. Compruebe que el proxy de desarrollo se está ejecutando y que está registrado como proxy del sistema.

  4. Compruebe que el certificado de Dev Proxy es de confianza en WSL.

unzip: comando no encontrado

Si el script de instalación falla con el error unzip: command not found, instale unzip y vuelva a ejecutar el script de instalación:

sudo apt update
sudo apt install unzip

Errores de certificado

Si ve errores de certificado:

  1. Asegúrese de instalar el certificado en WSL siguiendo los pasos descritos en Confiar en el certificado en WSL.
  2. Para Node.js aplicaciones, es posible que tenga que configurar la aplicación para que use el agente proxy. Consulte Uso del proxy de desarrollo con aplicaciones de Node.js.

Problemas de red de WSL

WSL 2 usa un adaptador de red virtualizado. Si experimenta problemas de red:

  1. Asegúrese de que el Firewall de Windows permite el proxy de desarrollo.
  2. Intente usar localhost en lugar de 127.0.0.1 al configurar la dirección de proxy.