Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Android Dev and zscaler

2025年09月20日に「Dev.to」が公開したITニュース「Android Dev and zscaler」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Android開発でZscaler環境下のHTTPS接続問題は、`gradle.properties`にプロキシやSSL証明書ストア設定を追加すれば解決できる。これにより、各JDKに手動で証明書をインストールする手間を省き、開発環境構築を効率化できる。

出典: Android Dev and zscaler | Dev.to公開日:

ITニュース解説

Androidアプリ開発は、スマートフォンで動く便利なアプリを作る魅力的な分野だ。しかし、開発を進める中で、時にネットワークに関する問題に遭遇することがある。特に企業や組織のネットワーク環境下では、インターネットへの接続が思ったようにいかないケースも少なくない。今回のニュースは、企業環境でよく使われるセキュリティサービス「Zscaler」が原因で発生するAndroid開発のビルドエラーを解決するための、実践的な方法について解説している。

Zscalerとは、企業向けのクラウドベースのセキュリティサービスのことだ。これは、企業ネットワーク内のパソコンやサーバーからインターネットへの通信をすべてZscalerのシステムを経由させることで、マルウェア感染や情報漏洩といったサイバー攻撃から守る役割を果たす。社員が安全にインターネットを利用できるようにするための、いわば「セキュリティゲート」のようなものだ。

Zscalerが通信を安全にするために行う重要な機能の一つに「TLS検査(SSLインスペクションとも呼ばれる)」がある。通常、インターネット上の安全な通信は、データが暗号化される「TLS/SSL」という技術によって保護されている。これにより、通信途中で第三者から内容を盗み見られたり改ざんされたりするのを防ぐ。Zscalerは、この暗号化された通信の内容を検査するために、一度通信を「復号(暗号を解く)」し、内容をチェックした後、再び「暗号化」して目的地に送るという特別な処理を行う。これは技術的には「中間者攻撃」と同じような仕組みだが、企業がセキュリティ目的で、かつ利用者もその仕組みを認識している前提で行われるため、正当な処理として扱われる。

このTLS検査が、Android開発の現場で問題となることがある。Androidアプリの開発では、プログラムをビルドするために「Gradle」というツールが使われることが多い。Gradleは、アプリに必要なライブラリやツールをインターネットからダウンロードしたり、開発環境の情報を取得したりするために、頻繁にインターネット通信を行う。このとき、ZscalerのTLS検査によって、Gradleが通常のWebサイトと異なる「証明書」を受け取ることになる。本来のWebサイトが持つ証明書ではなく、Zscalerが発行した独自の証明書が提示されるため、Gradleは「この証明書は信頼できない」と判断し、通信エラーが発生してしまうのだ。結果として、アプリのビルドが中断されたり、必要なファイルがダウンロードできなかったりして、開発が進まなくなる。

このような状況を解決するための従来の一般的な方法は、Java開発キット(JDK)が信頼する証明書を管理する「cacerts」というファイルに、Zscalerが発行する証明書を手動で追加することだった。cacerts は、Javaアプリケーションが通信相手の信頼性を確認するための重要なファイルで、これにZscalerのルート証明書を追加することで、GradleはZscaler経由の通信も信頼できるようになる。しかし、この方法には課題があった。まず、証明書の追加作業自体が少し複雑で、コマンドライン操作が必要になる場合がある。さらに、JDKのバージョンアップや、複数のJDKを使用している場合に、それぞれのJDKに対してこの作業を繰り返さなければならず、非常に手間がかかるという問題があった。

この問題を解決するため、よりスマートな方法が提案されている。それは、Gradleの設定ファイルである「gradle.properties」にいくつかの設定を追加するというものだ。 まず、「systemProp.https.proxyHost=127.0.0.1」と「systemProp.https.proxyPort=9000」という設定を追加することで、GradleがZscalerのローカルプロキシサーバー経由で通信するように指示する。これは、Zscalerが通常、開発者のPC上にローカルプロキシとして動作する仕組みを利用したものだ。 さらに重要なのが、「systemProp.javax.net.ssl.trustStoreType」という設定だ。この設定は、Gradleが通信相手の証明書を信頼するかどうかを判断する際に、どの「トラストストア(信頼された証明書の保管場所)」を参照するかを指定するものだ。Windows環境であれば「Windows-ROOT」を、macOS環境であれば「KeychainStore」を指定する。これにより、GradleはJava独自の cacerts ファイルではなく、OSが管理する証明書ストア(WindowsならWindowsの証明書ストア、macOSならキーチェーン)を参照するようになる。Zscalerのルート証明書は、多くの場合、企業のPCにはOSの証明書ストアにすでにインストールされているため、この設定を行うだけで、GradleはZscalerが発行する証明書も自動的に信頼できるようになるのだ。

この方法を使えば、開発者はJDKの cacerts に手動で証明書を追加する手間から解放される。OSが管理する証明書ストアを利用するため、JDKのバージョンアップごとに設定をやり直す必要もなくなる。これにより、企業環境下でのAndroidアプリ開発が、よりスムーズに、そして効率的に進められるようになる。セキュリティを確保しつつ開発者の生産性を高めるための、非常に実用的なテクニックだ。システムエンジニアを目指す上で、このようなネットワークセキュリティと開発環境の連携に関する知識は、今後さまざまな場面で役立つだろう。

関連コンテンツ

関連IT用語