Usare il proxy di sviluppo con WSL

A colpo d'occhio
Obiettivo: Usare Dev Proxy con sottosistema Windows per Linux (WSL)
Tempo: 15 minuti
Prerequisiti:Configurareil proxy di sviluppo, WSL installato

Quando si sviluppano applicazioni in WSL (sottosistema Windows per Linux), sono disponibili due opzioni per l'uso di Dev Proxy: eseguirlo nell'host Windows o in WSL. Entrambi gli approcci presentano vantaggi a seconda del flusso di lavoro di sviluppo.

L'approccio più semplice consiste nell'installare ed eseguire Dev Proxy in Windows. Con il proxy automatico di WSL e la modalità di rete con mirroring, WSL usa il proxy di sistema Windows, quindi le applicazioni in esecuzione in WSL hanno il traffico intercettato da Dev Proxy senza configurare il proxy in WSL.

Configurare la rete WSL

Dev Proxy si registra come proxy di sistema Windows in un indirizzo localhost (127.0.0.1:8000 per impostazione predefinita). Per consentire alle applicazioni in WSL di usare questo proxy, abilitare le impostazioni seguenti nella [wsl2] sezione del file di configurazione WSL disponibile in %UserProfile%\.wslconfig in Windows:

[wsl2]
networkingMode=mirrored
autoProxy=true
Setting Description
networkingMode=mirrored Esegue il mirroring delle interfacce di rete Windows in Linux, che consente alle applicazioni in WSL di connettersi ai server in esecuzione in Windows, ad esempio Dev Proxy, usando 127.0.0.1. Richiede Windows 11 versione 22H2 o successiva. Il valore predefinito è nat.
autoProxy=true Fa sì che WSL usi le impostazioni proxy HTTP di Windows, in modo che il proxy configurato in Windows venga impostato automaticamente in WSL. Disponibile in Windows 11. Abilitata per impostazione predefinita.

Dopo aver modificato il .wslconfig file, riavviare WSL per rendere effettive le modifiche:

wsl --shutdown

Annotazioni

Nella modalità di rete NAT predefinita le applicazioni in WSL non possono connettersi a Dev Proxy in Windows usando 127.0.0.1. Se non è possibile usare la modalità di rete con mirroring, eseguire invece Dev Proxy in WSL. Per altre informazioni, vedere Opzione 2: Dev Proxy in WSL.

Per altre informazioni, vedere Accesso alle applicazioni di rete con WSL e Configurazione delle impostazioni avanzate in WSL.

Configurare Dev Proxy su Windows

  1. Installare Dev Proxy in Windows usando winget o l'installazione manuale.

  2. Avviare il proxy di sviluppo:

    devproxy
    
  3. Considerare attendibile il certificato quando richiesto.

Usa il Dev Proxy da WSL

Quando Dev Proxy viene eseguito come proxy di sistema in Windows (comportamento predefinito) e hai configurato la rete in WSL, le applicazioni in WSL instradano automaticamente il traffico attraverso di esso.

Avviare l'applicazione in WSL come si farebbe normalmente. Dev Proxy intercetta le richieste HTTPS effettuate dalle applicazioni che rispettano le impostazioni proxy.

Importante

Riavviare WSL dopo l'avvio o l'arresto del proxy di sviluppo

WSL legge le impostazioni proxy Windows all'avvio. Se si avvia Dev Proxy dopo che WSL è già in esecuzione o se si arresta e si riavvia Dev Proxy, è necessario riavviare WSL per rendere effettive le modifiche:

wsl --shutdown

Avviare quindi una nuova sessione WSL.

Considerare affidabile il certificato in WSL

Affinché Dev Proxy possa intercettare il traffico HTTPS, le applicazioni in WSL devono accettare il certificato di Dev Proxy. È possibile copiare il certificato da Windows o esportarlo usando l'API del Proxy di sviluppo.

Opzione A: Copiare il certificato da Windows

  1. In WSL copiare il certificato da Windows:

    cp "/mnt/c/Users/<your-username>/AppData/Local/Programs/Dev Proxy/rootCert.pfx" ~/
    
  2. Esportare e installare il certificato:

    # 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
    

Opzione B: Usare l'API del proxy di sviluppo

L'API del proxy di sviluppo richiede un token di connessione. Mentre Dev Proxy è in esecuzione in Windows, ottenere il token eseguendo il comando del token API in un terminale Windows:

devproxy api token

Quindi, in WSL scaricare e installare il certificato. Sostituisci <token> con il token che hai recuperato:

# 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

Annotazioni

Alcune applicazioni potrebbero richiedere una configurazione aggiuntiva per considerare attendibile l'archivio certificati di sistema. Per Node.js applicazioni, potrebbe essere necessario impostare NODE_TLS_REJECT_UNAUTHORIZED=0 per scopi di sviluppo. La disabilitazione della convalida del certificato non è consigliata per il codice di produzione.

Opzione 2: Dev Proxy in WSL

Se si preferisce eseguire completamente Dev Proxy all'interno di WSL, installarlo usando il metodo di installazione di Linux e configurare manualmente il proxy.

Installare Dev Proxy in WSL

Lo script di installazione richiede unzip per estrarre Dev Proxy. Le distribuzioni WSL nuove, ad esempio Ubuntu, non lo includono per impostazione predefinita. Installare unzip:

sudo apt update
sudo apt install unzip

Installare Dev Proxy usando lo script di installazione:

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

Configurare manualmente il proxy

Poiché WSL non ha un ambiente desktop grafico, Dev Proxy non può eseguire automaticamente la registrazione come proxy di sistema. Configurare le applicazioni per l'uso manuale del proxy.

  1. Creare un file di configurazione del proxy di sviluppo con asSystemProxy impostato su 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. Avviare il proxy di sviluppo:

    devproxy
    
  3. Considerare attendibile il certificato:

    # 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. Configurare l'applicazione per l'uso del proxy. Impostare la HTTPS_PROXY variabile di ambiente:

    export HTTPS_PROXY=http://127.0.0.1:8000
    

    In alternativa, specificarlo durante l'esecuzione dell'applicazione:

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

Suggerimento

Per altre informazioni sulla configurazione del proxy per le applicazioni Node.js, vedere Usare Dev Proxy con applicazioni Node.js.

Confronto tra approcci

Caratteristica / Funzionalità Host Windows (opzione 1) All'interno di WSL (opzione 2)
Complessità della configurazione Semplice Moderato
Requirements Windows 11 22H2 o versione successiva, modalità di rete con mirroring WSL None
Gestione dei certificati Copia una tantum da Windows Esportazione manuale
Configurazione proxy Automatico (Proxy automatico WSL) Manuale (HTTPS_PROXY)
Riavvio WSL necessario Sì, quando si attiva o disattiva il proxy NO
Funziona con tutte le app WSL Sì Dipende dal supporto del proxy dell'app

Per la maggior parte degli scenari, l'esecuzione di Dev Proxy in Windows (opzione 1) è l'approccio consigliato grazie alla semplicità e alla configurazione automatica del proxy.

Risoluzione dei problemi

Le richieste non vengono intercettate quando si usa l'host Windows

Se Dev Proxy in Windows non intercetta le richieste da WSL:

  1. Verificare che networkingMode=mirrored e autoProxy=true siano impostati nella [wsl2] sezione del .wslconfig file. Per altre informazioni, vedere Configurare la rete WSL.

  2. Riavviare WSL per aggiornare le impostazioni proxy:

    wsl --shutdown
    
  3. Verificare che Dev Proxy sia in esecuzione e registrato come proxy di sistema.

  4. Verificare che il certificato del proxy di sviluppo sia attendibile in WSL.

unzip: comando non trovato

Se lo script di installazione non riesce con l'errore unzip: command not found , installare unzip ed eseguire di nuovo lo script di installazione:

sudo apt update
sudo apt install unzip

Errori del certificato

Se vengono visualizzati errori di certificato:

  1. Assicurarsi di aver installato il certificato in WSL seguendo la procedura descritta in Considerare attendibile il certificato in WSL.
  2. Per Node.js applicazioni, potrebbe essere necessario configurare l'applicazione per l'uso dell'agente proxy. Vedere Usare Dev Proxy con applicazioni Node.js.

Problemi di rete WSL

WSL 2 usa una scheda di rete virtualizzata. Se si verificano problemi di rete:

  1. Assicurarsi che Windows Firewall consenta il proxy di sviluppo.
  2. Provare a usare localhost invece di 127.0.0.1 quando si configura l'indirizzo proxy.