LoginSignup
10
4

More than 5 years have passed since last update.

Android7以上の端末でもCharlesで通信を確認できるようにする方法

Last updated at Posted at 2018-12-17

Android7以上(compileSdkVersion:24以降)でも通信をCharlesで確認できるようにする設定を備忘録として記載しようと思います。

準備

予め下記の設定を行い、セキュリティ構成ファイルの追加を行って下さい。
1.AndroidManifest.xmlに下記を書き足す。

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:networkSecurityConfig="@xml/network_security_config"
                    ... >
        ...
    </application>
</manifest>

2.セキュリティ構成ファイルとしてnetwork_security_config.xmlを下記のようなディレクトリになるように作成する。
res/xml/network_security_config.xml:

あとは下記から自分の用途にあったセキュリティの設定を行い、Android7以上端末でも通信をCharlesでも確認できるようにします。

デバック時のみ確認を行う場合

デバック時にどの端末でも確認できるようにしたい場合はnetwork_security_config.xmlを下記のようにして下さい。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="system"/>
        </trust-anchors>
    </base-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

Charlesの独自証明書をインストールした端末のみ確認を行う場合

デバック時にCharlesが発行した独自証明書がインストールされた端末のみ通信を確認ができるようにする場合は下記のようにして下さい。
1.まずはCharlesのメニューからhelp→SSL Proxying→Save Charles Root Certificateを選択し証明書を保存して下さい。
スクリーンショット 2018-12-16 14.52.02.png

2.保存した証明書を「charles_ssl_proxying_certificate」というファイル名に変更して下記のようなディレクトリになるように追加して下さい。
res/raw/charles_ssl_proxying_certificate:
(※ファイル名に「-」が使えない点と、追加時に拡張子を付けないように気をつけて下さい)

3.最後にnetwork_security_config.xmlを下記のようにしてデバック時に追加した証明書を信頼するように設定します。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="system"/>
        </trust-anchors>
    </base-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="@raw/charles_ssl_proxying_certificate"/>
        </trust-anchors>
    </debug-overrides>
</network-security-config>

Android6以前のようにリリース時も確認できるようにする方法

デバック時リリース時の両方で確認が行えるようにしたい場合はnetwork_security_config.xmlを下記のように設定して下さい。
(※リリース時でも確認できるようになってしまう分、セキュリティ面では弱くなってしまいます)

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="system"/>
            <certificates src="user" />
        </trust-anchors>
    </base-config>
</network-security-config>
10
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
4