自己署名証明書を取り込む(API>29、Android Chrome編)

投稿日:  更新日:

通常、Chromeは自己署名証明書を「信頼できない証明書」と判断します。その結果、httpsによる接続は拒否されます。

しかし、自己署名証明書を「信頼できる証明書」として、Androidへ意図的にインストールすることで、httpsによる接続が可能になります。

ただし、自己署名証明書が信頼できない点は変わりません。

ですので、パブリックなWebサーバーで、この方法を用いる事は危険です。プライベートなローカルWebサーバーのみで用いるようにして下さい。

※環境:XAMPP 8.2.12
     XAMPP Control Panel Version 3.3.0.
     Apache 2.4.58
     OpenSSL 1.1.1p
    Chrome バージョン 113.0.5672.136 (Android版)
    Emulator 14.0(U) API 34

スポンサーリンク

証明書の注意

Android Chromeは証明書を保持していません。

ホストの証明処理はAndroidの証明書マネージャーから証明書を取り寄せて行われます。

証明書マネージャーは外部から入手した証明書をインストールする機能を持ちます。

この機能を使って、自己署名証明書をインストールできます。ただし、インストールする証明書はCA証明書である必要があります。

また、最新のChromeは証明対象のホストをSAN(Subject Alternative Name)で評価するようになりました。CN(Common Name)は使われません。

ですので、証明書マネージャーへインストールする証明書は、SANを持つ必要があります。

以下は、証明書のダンプです。Chrome対応は赤字の部分が必要です。

# openssl x509 -text -in server.crt -noout
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            76:8d:03:60:fa:d7:9c:0e:f0:cb:f9:df:a0:fd:bf:ba:9d:b4:19:34
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = JP, ST = SampleKen, L = SampleShi, O = SampleCorp, OU = SampleSect, CN = mysite.example.com, emailAddress = SampleAddr
        Validity
            Not Before: Nov 20 13:53:37 2025 GMT
            Not After : Nov 20 13:53:37 2026 GMT
        Subject: C = JP, ST = SampleKen, L = SampleShi, O = SampleCorp, OU = SampleSect, CN = mysite.example.com, emailAddress = SampleAddr
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
                Modulus:
                    00:fa:15:e1:32:33:f5:c5:a4:92:54:14:a4:80:fe:
                    44:51:65:e2:d5:51:9c:0a:8e:c0:7a:fc:f9:69:e2:
                    ...
                    15:07:91:b8:8a:5b:cc:fe:8d:c6:22:d8:8a:15:94:
                    7c:3b
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Alternative Name:
                DNS:mysite.example.com
            X509v3 Basic Constraints:
                CA:TRUE
            X509v3 Subject Key Identifier:
                2A:53:5F:8A:D6:87:36:C7:69:44:1B:30:34:38:CB:77:63:91:57:EB
    Signature Algorithm: sha256WithRSAEncryption
    Signature Value:
        ac:26:d6:d3:77:7b:69:52:75:df:f8:9b:48:de:ab:9d:f2:da:
        3c:ce:16:25:42:e6:62:e9:ea:4e:e4:1e:ed:b1:1d:47:dd:92:
        ...
        fb:ba:a3:b7:82:9d:4f:17:c5:1f:ab:e6:a2:4d:a1:d1:1c:2e:
        b3:73:93:a8

※証明書の作成は「ローカルWebサーバーのhttps対応(XAMPP編)」を参照

スポンサーリンク

証明書のインストール

アップロード

自己署名証明書をAndroidへアップロードしておきます。今回は、Downloadフォルダへアップロードしました。

ターミナルを開き、「adb push」を使って、下記のように実行して下さい。

> adb push server.crt /storage/emulated/0/Download
server.crt: 1 file pushed, 0 skipped. 0.2 MB/s (1488 bytes in 0.009s)
> adb shell "ls -l /storage/emulated/0/Download"
total 8
-rw-rw---- 1 u0_a191 media_rw 1488 2025-11-20 13:53 server.crt

インストール

Settingsアプリの「Install a certificate」を開きます。

このページは深いところにあるので、SettingsアプリのSearch機能の利用がお勧めです。

Search機能で開くリンクを巡って開く
「Install a certificate」を開く
「Install a certificate」を開く

「Install a certificate」でアップロード済みの証明書を指定して、インストールします。

証明書のインストール

スポンサーリンク

証明書の確認

Settingsアプリの「Trusted credentials(信頼された信用証明書)」を開きます。

このページは深いところにあるので、SettingsアプリのSearch機能の利用がお勧めです。

Search機能で開くリンクを巡って開く
「Trusted credentials」を開く
「Trusted credentials」を開く

「Trusted credentials」でインストール済みの証明書を指定して、表示します。

証明書の表示

スポンサーリンク

httpsアクセス

AndroidのChromeを使ってhttpsでアクセスした結果です。

httpsアクセス

※アクセスしたWebサーバーについては「ローカルWebサーバーのhttps対応(XAMPP編)」を参照

スポンサーリンク

関連記事:

Androidエミュレーターが実行されると、仮想ネットワークが自動生成されます。 そして、エミュレーターは、仮想ネットワークに接続された一つのコンピュータとして扱われます。 仮想ネットワークは開発マシン(Android Studioが起動しているマシン)にも接続されてるので、エミュレーターから開発マシンへ、ネットワークを介した通信が可能です。 開発マシンへWebサーバーを構築すれば、サーバーと通信を行うアプリ開発が行えます。 開発者の机の上に、バックエンド(サーバ側)とフロントエンド(クライアント側)の開発環境が得られて、とても便利です。 ※環境:Android Studio Otter | 2025.2.1     Android emulator version 36.2.12.0 ...
WindowsもLinux(Unix)と同じように「/etc/hostsファイル」を持っています。 役割も同じで「ホスト名とIPアドレスの変換テーブル」です。ホスト名からIPアドレスへ変換する際に、DNSに先立って参照されます。 ですので、hostsファイルにホスト名とIPアドレスの対を登録すれば、任意のホスト名でネットアクセスが可能になります。 ただし、Windowsの一般ユーザ向けの機能というよりも、ヘビーユーザー向けの隠し機能のような存在です。 このような機能はトラブルの火種に成りかねないので、一時的な利用に止め、不要になったら設定を削除することをお勧めします。 ※環境:Windows 11 Pro Version 25H2 ...
Androidエミュレータがブート時に用いるシステムイメージは、デフォルトで読み出し専用イメージです。 Androidシステムの起動後に、システムに深く関連するディレクトリやファイル(例えば、/etc/hosts)の書き込み(または書き換え)は出来ません。読み出しは出来ます。 書き込みを行いたい場合は、書き込み可能イメージを作成して、そのイメージをブートで用います。 書き込み可能イメージは、エミュレータの起動オプション「-writable-system」の指定で作成可能です。 Android StudioのDevice Managerからエミュレータを起動できますが、Android Studioは起動オプションを指定出来ません。昔は出来ていたと思うのですが... ですので、ここではAndroid Studioは使わずに、ターミナル等のコマンドラインからエミュレータを起動しています。 ※環境:Android Studio Otter | 2025.2.1     Android emulator version 36.2.12.0     Google APIs Inten x86 At ...
Androidエミュレータがブート時に用いるシステムイメージは、デフォルトで読み出し専用イメージです。 Androidシステムの起動後に、システムに深く関連するディレクトリやファイル(例えば、/etc/hosts)の書き込み(または書き換え)は出来ません。読み出しは出来ます。 書き込みを行いたい場合は、書き込み可能イメージを作成して、そのイメージをブートで用います。 書き込み可能イメージは、エミュレータの起動オプション「-writable-system」の指定で作成可能です。 Android StudioのDevice Managerからエミュレータを起動できますが、Android Studioは起動オプションを指定出来ません。昔は出来ていたと思うのですが... ですので、ここではAndroid Studioは使わずに、ターミナル等のコマンドラインからエミュレータを起動しています。 ※環境:Android Studio Otter | 2025.2.1     Android emulator version 36.2.12.0     Google APIs Inten x86 At ...
開発マシンへローカルWebサーバー(Apache)を構築します。 これにより、Webサーバーと通信するアプリのテストが容易になります。 外部にWebサーバーを調達する必要がなく、机上のパソコン(開発マシン)内でテスト環境が完結します。 Webサーバーの構築にXAMPPを使いました。 XAMPPは、ファストフードならぬ、ファストツールです。インストールして直ぐに使える点が、いいですね! ※環境:XAMPP 8.2.12      XAMPP Control Panel Version 3.3.0.      Apache 2.4.58      OpenSSL 1.1.1p     Chrome バージョン 142.0.7444.163 ...
2000年の初め頃、https(HTTPのSSLによる暗号化通信)は、Webサイトの一部のページやECサイトなど、機密情報を扱う部分のみで使われていました。 「ネット決済をするときは、URL横の鍵マークを確認しましょう!」と、注意喚起されていたのを覚えています。 現在は、機密情報を扱う・扱わないに関係なく、ほとんどのWebサイトがhttpsを採用しています。安全なサイトであることを証明するためです。 日本(2025年)におけるWebサイトのhttps使用率は95%に達しているそうです。ですから、httpsは必須と言えます。 ローカルWebサーバーのhttps化は不要ですが、アプリ開発環境であれば、実環境(一般ユーザにアプリを使ってもらう環境)に合わせて導入した方が良いでしょう! ※環境:XAMPP 8.2.12      XAMPP Control Panel Version 3.3.0.      Apache 2.4.58      OpenSSL 1.1.1p     Chrome バージョン 142.0.7444.163 (Windows版) ...
通常、Chromeは自己署名証明書を「信頼できない証明書」と判断します。その結果、httpsによる接続は拒否されます。 しかし、自己署名証明書を「信頼できる証明書」として、Chromeへ意図的に取り込むことで、httpsによる接続が可能になります。 ただし、自己署名証明書が信頼できない点は変わりません。 ですので、パブリックなWebサーバーで、この方法を用いる事は危険です。プライベートなローカルWebサーバーのみで用いるようにして下さい。 ※環境:XAMPP 8.2.12      XAMPP Control Panel Version 3.3.0.      Apache 2.4.58      OpenSSL 1.1.1p     Chrome バージョン 142.0.7444.163 (Windows版) ...
通常、Chromeは自己署名証明書を「信頼できない証明書」と判断します。その結果、httpsによる接続は拒否されます。 しかし、自己署名証明書を「信頼できる証明書」として、Androidへ意図的にインストールすることで、httpsによる接続が可能になります。 ただし、自己署名証明書が信頼できない点は変わりません。 ですので、パブリックなWebサーバーで、この方法を用いる事は危険です。プライベートなローカルWebサーバーのみで用いるようにして下さい。 ※環境:XAMPP 8.2.12      XAMPP Control Panel Version 3.3.0.      Apache 2.4.58      OpenSSL 1.1.1p     Chrome バージョン 74.0.3729.185 (Android版)     Emulator 10.0(Q) API 29 ...
スポンサーリンク