次の方法で共有


WSL で開発プロキシを使用する

概要
目標: Windows Subsystem for Linux (WSL) で開発プロキシを使用する
時間: 15 分
前提条件:開発プロキシのセットアップ、WSL のインストール

WSL (Linux 用 Windows サブシステム) でアプリケーションを開発する場合、開発プロキシを使用するには、Windows ホストまたは WSL 内でアプリケーションを実行する方法の 2 つがあります。 どちらの方法にも、開発ワークフローに応じて利点があります。

最も簡単な方法は、Windows に開発プロキシをインストールして実行することです。 WSL では Windows システム プロキシが自動的に使用されるため、WSL で実行されているアプリケーションでは、追加の構成なしで Dev Proxy によってトラフィックがインターセプトされます。

Windows で開発プロキシを設定する

  1. winget または手動インストールを使用して Windows に開発プロキシをインストールします。

  2. 開発プロキシの起動:

    devproxy
    
  3. メッセージが表示されたら、証明書を信頼します。

WSL から開発プロキシを使用する

開発プロキシが Windows 上でシステム プロキシとして実行されると (既定の動作)、WSL のアプリケーションは自動的にトラフィックをルーティングします。

通常どおりに WSL でアプリケーションを起動します。 開発プロキシは、アプリケーションによって行われた HTTPS 要求をインターセプトします。

Important

開発プロキシの起動または停止後に WSL を再起動する

WSL はシステム プロキシ設定をキャッシュします。 WSL が既に実行されている後に開発プロキシを起動する場合、または開発プロキシを停止して再起動する場合は、変更を有効にするために WSL を再起動する必要があります。

wsl --shutdown

次に、新しい WSL セッションを開始します。

WSL で証明書を信頼する

開発プロキシが HTTPS トラフィックをインターセプトするには、WSL 内のアプリケーションが開発プロキシ証明書を信頼する必要があります。 Windows から証明書をコピーするか、開発プロキシ API を使用してエクスポートできます。

オプション A: Windows から証明書をコピーする

  1. WSL で、Windows から証明書をコピーします。

    cp /mnt/c/Users/<your-username>/.config/dev-proxy/rootCert.pfx ~/
    
  2. 証明書をエクスポートしてインストールします。

    # 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
    

オプション B: 開発プロキシ API を使用する

開発プロキシが Windows で実行されている間は、証明書をダウンロードしてインストールします。

# 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

一部のアプリケーションでは、システム証明書ストアを信頼するために追加の構成が必要になる場合があります。 Node.js アプリケーションの場合は、開発目的で NODE_TLS_REJECT_UNAUTHORIZED=0 を設定することが必要になる場合があります。 運用環境のコードでは、証明書の検証を無効にすることはお勧めしません。

オプション 2: WSL 内の開発プロキシ

開発プロキシを WSL 内で完全に実行する場合は、Linux インストール方法を使用してインストールし、プロキシを手動で構成します。

WSL に開発プロキシをインストールする

セットアップ スクリプトを使用して開発プロキシをインストールします。

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

プロキシを手動で構成する

WSL にはグラフィカル デスクトップ環境がないため、開発プロキシはシステム プロキシとして自動的に登録できません。 プロキシを手動で使用するようにアプリケーションを構成します。

  1. asSystemProxyfalse に設定された開発プロキシ構成ファイルを作成します。

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.3.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.3.0/genericrandomerrorplugin.schema.json",
        "errorsFile": "devproxy-errors.json"
      },
      "rate": 50,
      "logLevel": "information"
    }
    
  2. 開発プロキシの起動:

    devproxy
    
  3. 証明書を信頼します。

    # 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. プロキシを使用するようにアプリケーションを構成します。 HTTPS_PROXY環境変数を設定します。

    export HTTPS_PROXY=http://127.0.0.1:8000
    

    または、アプリケーションの実行時に指定します。

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

ヒント

Node.js アプリケーションのプロキシの構成の詳細については、「Node.js アプリケーション での開発プロキシの使用」を参照してください。

アプローチの比較

特徴 Windows ホスト (オプション 1) WSL 内 (オプション 2)
セットアップの複雑さ Simple 適度
証明書の管理 Windows からの 1 回限りのコピー 手動エクスポート
プロキシの構成 自動 (システム プロキシ) 手動 (HTTPS_PROXY)
WSL 再起動が必要 はい(プロキシを切り替える場合) いいえ
すべての WSL アプリで動作する イエス アプリ プロキシのサポートに依存

ほとんどのシナリオでは、その簡単さとプロキシの自動設定のために、オプション 1として Windows で Dev Proxy を実行することをお勧めします。

トラブルシューティング

Windows ホストを使用しているときに要求がインターセプトされない

Windows 上の開発プロキシが WSL からの要求をインターセプトしていない場合:

  1. WSL を再起動してプロキシ設定を更新します。

    wsl --shutdown
    
  2. 開発プロキシが実行され、システム プロキシとして登録されていることを確認します。

  3. 開発プロキシ証明書が WSL で信頼されていることを確認します。

証明書エラー

証明書エラーが表示される場合:

  1. WSL での証明書の信頼の手順に従って、 WSL に証明書をインストールしたことを確認します。
  2. Node.js アプリケーションの場合は、プロキシ エージェントを使用するようにアプリケーションを構成することが必要になる場合があります。 「 Node.js アプリケーションでの開発プロキシの使用」を参照してください。

WSL ネットワークの問題

WSL 2 では、仮想化されたネットワーク アダプターが使用されます。 ネットワークの問題が発生した場合:

  1. Windows ファイアウォールで開発プロキシが許可されていることを確認します。
  2. プロキシ アドレスを構成するときに、localhostの代わりに127.0.0.1を使用してみてください。