VPN(GlobalProtect)対応の実施
GlobalProtectというVPN製品が提供するSIG(Secure Internet Gateway)の環境下で、WSL2上のWebアクセス系コマンドがx509エラーになることがあります。
参考記事:
本記事は、その回避方法を記載したものです。
ザックリとは、wsl-vpnkitを導入し、VPN用のルート証明書をWSL2上のLinuxにインストールすることで、現象を回避できます。 以下、その手順です。
1. wsl-vpnkitの導入
まず、wsl-vpnkitを導入します。
参考記事:
https://zenn.dev/xeres/articles/2023-10-05-install-wsl-vpnkit
なお、参考記事にもありますが、Windows 11環境ではMirrored モードを使用した方がいいかもしれません。私の環境は10だったので、とりあえずこれで。
1.1. wsl-vpnkitの入手
以下から最新(※)のwsl-vpnkit.tar.gzを入手。(※)2025年3月30日時点ではv0.4.1
https://github.com/sakai135/wsl-vpnkit/releases/
格納先はどこでもいいですが、以降の手順をコピペでやりたい方は「D:\wsl\wsl-vpnkit」直下に保存してください。
1.2. wsl-vpnkitのインストール
ホストのWindowsからPowershellで以下を順に実行し、wsl-vpnkitSのインストールを実施。
cd D:\wsl\wsl-vpnkit # wsl-vpnkit.tar.gz格納先
wsl --import wsl-vpnkit --version 2 D:\wsl\wsl-vpnkit wsl-vpnkit.tar.gz
1.3. wsl-vpnkitの自動起動設定
wsl-vpnkitが自動起動するように設定します。
以下、WSL上でWebアクセスをさせたいディストリビューション(ゲストOS)の名前が「Ubuntu」である前提で手順を記載します。必要があれば読み替えてください。
まず、Ubuntuの/etc/wsl.confに以下を設定しsystemdを有効化してください。
[boot]
systemd=true
Ubuntuで以下を実行し、systemdにwsl-vpnkitの起動を追加し、有効化します。
wsl.exe -d wsl-vpnkit --cd /app cat /app/wsl-vpnkit.service | sudo tee /etc/systemd/system/wsl-vpnkit.service
sudo systemctl enable wsl-vpnkit
ホストのWindowsのコマンドプロンプトから以下を実行してUbuntuを再起動します。
wsl --shutdown
wsl -d Ubuntu
2. ゲストOSへVPN用ルート証明書をインストール
次に、UbuntuにVPN用のルート証明書をインストールし、SSLのエラーを抑止します。
参考記事:
2.1. ホストOSからVPN用ルート証明書を取得
ホストのWindowsのコマンドプロンプトから以下を実行し、証明書ストアを起動。
certmgr.msc
起動した画面から「信頼されたルート証明書」⇒「証明書」を開いて、VPN(GlobalProtect)用の証明書を探してください。多分、名前にVPNとかSIG(Secure Internet Gateway)とかが入っているような気がします。
証明書を見つけたら、「右クリック」⇒「すべてのタスク」⇒「エクスポート」を選択し、証明書のエクスポート ウィザードを起動。
さらに「次へ」をクリックすると、以下の画面になります。
「Base 64 encoded X.509」を選択し、「次へ」をクリック。
ファイル名を指定する画面が起動するので、「D:\wsl\wsl-vpnkit\certification_for_VPN.cer」を指定して「次へ」をクリック。
完了画面が表示されるので、「完了」をクリック。
2.2. ゲストOSへ証明書をインストール
Ubuntuで以下のコマンドを順に実行。
sudo cp /mnt/d/wsl/wsl-vpnkit/certification_for_VPN.cer /usr/local/share/ca-certificates/certification_for_VPN.crt
sudo update-ca-certificates
2.3 動作確認
Ubuntuで以下を実行し、エラーにならないことを確認。
wget https://www.google.com -O /tmp/test
実行例
$ wget https://www.google.com -O /tmp/test
--2025-04-11 16:58:15-- https://www.google.com/
Resolving www.google.com (www.google.com)... 172.217.161.196
Connecting to www.google.com (www.google.com)|172.217.161.196|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: ‘/tmp/test’
/tmp/test [ <=> ] 17.67K --.-KB/s in 0.01s
2025-04-11 16:58:15 (1.39 MB/s) - ‘/tmp/test’ saved [18099]```
以上で、WSL2のLinuxからSSLを用いた通信が可能になります。