はじめに

前回、外部端末からアクセス可能な HTTPS テスト環境の構築を行いました。

プライベートネットワークに接続されている iPhone からアクセスし、警告画面が表示されることなく、サイト画面が表示されることを確認しました。

また、Secure Context を必要とする OPFS も利用できることから、ブラウザから Secure Context として扱われていることも確認できました。

今回は、スマホとして iPhone と双璧をなす Android 端末にも同様の設定を行い、その違いをみながら、動作確認を行っていきます。

使用する端末は、Google Pixel 6a(Android 17)です。

※ Android は、メーカーや機種、 OS のバージョンによって、設定メニューなどに違いがあります。そのため、本手順を試す場合は、対象となる端末に合わせた対応をお願いします。

本記事は、「開発環境について/外部アクセス対応のHTTPSテスト環境の構築」により、パソコン側の設定が完了していることを前提とし、Android 側の設定のみを記載します。

使用するパソコン側の IP アドレス( 192.168.10.108 )やポート番号( 3000 )も変更ありません。

ルート認証局(CA)の証明書も HTTPS テスト環境のサーバーからダウンロードする方法で行います。


※ Android端末へ転送するのは rootCA.pem のみです。認証局の秘密鍵である rootCA-key.pem は、絶対に転送・公開しないでください。

※ ルート認証局(CA)の証明書を HTTP / HTTPS サーバーから取得する方法は、自分が管理している開発用プライベートネットワーク内に限定した方が安全です。ダウンロード後は、すみやかに、ルート認証局(CA)の証明書を public フォルダーから削除することをおすすめします。


iPhone と Android のルート認証局(CA)の証明書の設定方法の違い

下記に、iPhone と Android での違いを示します。

iPhone Android
root CA rootCA.pem rootCA.pem
端末への転送 必要 必要
プロファイル インストールする 基本的には不要
CA登録 プロファイルをインストール 「CA 証明書」としてインストール
Chromeでの確認 別途「証明書信頼設定」を有効化 CA証明書のインストールで警告が消失(今回の環境)
ブラウザ Chromeなど Chromeなど

前回使用した iPhone では、「インストール」と「信頼」の2段階での設定が必要だったのに対し、今回使用した Google Pixel 6a(Android 17)の Chrome では、rootCA.pem を「CA証明書」としてインストールすることで、HTTPS接続時の警告表示がなくなりました。

ただし、Androidではユーザーが追加したCA証明書をすべてのアプリが自動的に信頼するわけではありません。アプリによっては、ユーザー追加CAを信頼するための設定が別途必要になる場合があります。


※ 以下は、筆者が使用した Google Pixel 6a(Android 17)で確認した手順です。 Android のバージョンや機種によって、設定項目の名称や階層が異なる場合があります。


1. スマホ( Google Pixel 6a (Android17) )でのルート認証局(CA)の証明書の受取

スマホから HTTPS サーバーにアクセスしてルート認証局(CA)の証明書を取得します。

※ 本記事では、ブラウザに Chrome を使用しています。

ブラウザを立ち上げ、URL 欄に 以下を入力:

https://192.168.10.108:3000/rootCA.pem

1-1. 警告画面の表示

警告画面が表示されます。画面下部の「詳細設定」をタップします。

※ 本記事のスクリーンショットでは、操作する箇所を朱色の円で囲んで示しています。


(図1)警告画面1


1-2. 新たな警告画面の表示

新たな警告画面が表示されます。画面中央の「192.168.10.108にアクセスする(安全ではありません)」をタップします。


(図2)警告画面2


1-3. 証明書インストーラーで開く

画面下部に開くアプリを選択する旨のメッセージが表示されるので、証明書インストーラーが選択されていることを確認し、「1回のみ」をタップします。


(図3)証明書インストーラーで開く


1-4. 「設定」アプリでの証明書インストールを促すメッセージの確認

表示されるポップアップで「閉じる」をタップします。


(図4)証明書インストールを促すポップアップ


※ 少しわかりづらいですが、ここまでで、ダウンロードフォルダーにルート認証局(CA)の証明書がダウンロードされています。


2. スマホ( Google Pixel 6a (Android17) )でのルート認証局(CA)の証明書の登録

2-1. セキュリティとプライバシー設定画面を開く

Android の設定アプリをタップして立ち上げ、表示された画面を下方向にスクロールし、「セキュリティとプライバシー」を見つけてタップします。


(図5)セキュリティとプライバシー設定画面を開く


2-2. 高度な保護機能設定画面を開く

表示された「セキュリティとプライバシー」設定画面を下方向にスクロールし、「高度な保護機能」を見つけてタップします。


(図6)高度な保護機能を開く


2-3. 暗号化と認証情報設定画面を開く

表示された「高度な保護機能」設定画面の「暗号化と認証情報」をタップします。


(図7)暗号化と認証情報設定画面を開く


2-4. 証明書をインストール設定画面を開く

表示された「暗号化と認証情報」設定画面の「証明書をインストール」をタップします。


(図8)証明書をインストール設定画面を開く


2-5. CA 証明書設定画面を開く

表示された「証明書をインストール」設定画面の「CA 証明書」をタップします。


(図9)CA証明書設定画面を開く


2-6. CA 証明書のインストール

表示された「CA 証明書」設定画面の「インストールする」をタップします。

※ この際、本人確認が求められます。確認を完了させ、先に進んでください。


(図10)CA証明書のインストール


2-7. CA 証明書の選択

表示されている CA 証明書が、今回ダウンロードした mkcert のルート CA であることを確認し、タップします。


(図11)CA証明書の選択


2-8. CA 証明書の登録完了

画面が戻り、CA 証明書インストール完了のメッセージが表示されることを確認し、設定アプリを終了します。


(図12)CA証明書の登録完了



3. ブラウザで警告画面と警告表示が表示されないことの確認

ブラウザにもどり、URL 欄に 以下を入力:

https://192.168.10.108:3000/

警告画面や警告表示がなく、サイトの画面が表示されることを確認できます。

※ iPhone の時とは異なり、筆者の環境では、特に新しいタブで開かなくても、警告表示が消えないということはありませんでした。


(図13)Androidサイト画面


iPhone の場合と同様に、今回のアクセス先は localhost ではなく 192.168.10.108 ですが、ブラウザから Secure Context として扱われているため、Secure Context を必要とする OPFS も利用できます。


(図14)Androidサイト画面動作確認


※ 使い方については、「データ保存技術/OPFS の動作確認(非同期操作)」を参照してください。