Zscaler環境下でovr-platform-utilを実行するとOculusアプリをOculusのプラットフォームにアップロードできませんでした。
この記事ではその問題と対応方法についてメモします。
発生する問題
ovr-platform-utilをZscaler環境下で実行すると以下のようなエラーが出力されます。
A network error occurred. The request will be retried.
下記のログを見ると証明書でエラーになっているようです。
ZscalerがSSL検査を行っている場合は通信の中間に割り込みされ、クライアントからの通信先は検査を行うサーバーになるようです(アプリケーション固有の信頼ストアへのカスタム証明書の追加 | Zscaler参照)。
ユーザーのPCには自動的に、検査を行うサーバーの証明書がルート証明書として導入されるようですが、それを利用しないツールなどでは証明書の問題が発生するようです。
また、ログを見るとovr-platform-utilはnodejsで実装されているようです。
2024-03-10T23:07:53.381Z [DEBUG] A network error occurred. The request will be retried.
2024-03-10T23:07:53.382Z [ERROR] Server log: {"app_id":[masked],"client":"COMMAND_LINE","log_level":"ERROR","event_name":"NETWORK_ERROR","stack_trace":"Error: unable to get local issuer certificate\n at TLSSocket.onConnectSecure (node:_tls_wrap:1530:34)...
対応方法
NODE_EXTRA_CA_CERTS環境変数にZscalerのルート証明書のパスを設定します。
Zscalerのルート証明書は、環境によって変わるかもしれないですが以下のようにして取得しています。
[コントロールパネル] > [インターネットオプション] > [コンテンツ] > [証明書] > [信頼されたルート証明機関]で[ZScaler Root CA]を選択してエクスポート、[Base64 encoded X.509]を選択して保存