WSLにおけるSSL証明書エラー
先日、社用PCのWSLにRustをinstallしようとしたところ、CurlがSSLエラーを吐いてしまった。
証明書を無視するオプションを付けても解決しない。
いろいろ調べると、会社指定のZscalerが原因であることが判明した。
Zscalerに限らず、SSL証明書に関連するセキュリティソフト関連の問題も、同様だと思われる。
TL; DR
- ZscalerのSSL証明書をWindowsからエクスポートする
- 上記のSSL証明書をpem形式に変換する
- その証明書をWSL内のSSL証明書ファイルとして配置する
発端
WSLにRustをinstallしようとしたところ、CurlがSSLエラーを吐いてしまった。
1 |
|
しかし、別のPCではこの問題は生じていない。
WSLではネットワーク関係の問題が起きやすいので、そのあたりを踏まえつつ、調査を続けた。
特定
StackOverflowのこの回答内で、
問題を切り分けるために、以下のコマンドを実行するように示されていた。
1 |
|
実行結果をChatGPTに投げつつ確認したところ、常駐セキュリティソフトの存在ゆえにWSL内でSSL証明書のエラーが生じていることが分かった。
今回の場合で言えばZscalerが常駐しており、ネットワーク通信はそこを経由する。
Zscalerが提供したSSL証明書を利用しない場合、そこでエラーが生じる。
WindowsにはZscalerのSSL証明書がインストールされているので、Windows側ではこの問題は生じていない。
手順
ZscalerのSSL証明書をWindowsからエクスポートする
Redditのthreadに従う。
Win+R
からcertmgr.msc
を起動する- 「信頼されたルート証明機関」 > 「証明書」 > Zscalerの証明書を選択する
- 右クリック > 「すべてのタスク」 > 「エクスポート」を選択する
DER形式
で保存する
pem形式に変換する
openssl
を利用して、DER形式からpem形式に変換する。
1 |
|
WSL内のSSL証明書ファイルとして配置する
/etc/ssl/certs/
にzscaler.pem
をca-certificates.crt
として配置する。
これは望ましい方法ではない。