Androidアプリの開発時に自己証明書を許可する方法
のえる
2022.05.27
Android アプリを開発中に、自己証明書(通称オレオレ証明書)を使ってSSL接続することがあると思います。
ただ、この接続では、ネットワーク接続中にエラーが出ることがあり、いろいろと不都合があるかと思います。
今回はそんな開発時の悩みを解決する方法をご紹介します。
環境情報
Android のバージョンは 12 となります。
他のバージョンでの動作を保証するものではありません。
また、この設定をするには ルート証明書 が必要になりますのでご用意ください。
プログラムを改修する
まずはネットワーク設定ファイルを指定します。
AndroidManifest.xml ファイルに指定しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="jp.co.example.project"> <application tools:replace="android:usesCleartextTraffic" android:name=".ExampleApplication" android:usesCleartextTraffic="false" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:largeHeap="true" android:resizeableActivity="false" android:clearTaskOnLaunch="true" android:networkSecurityConfig="@xml/network_security_config" android:theme="@style/Theme.Example"> |
続いて対象のファイルを作成します。
(すでにある場合は該当場所に追記してください)
1 2 3 4 5 6 7 8 9 10 |
<?xml version="1.0" encoding="utf-8"?> <network-security-config xmlns:tools="http://schemas.android.com/tools"> <debug-overrides> <trust-anchors> <certificates src="@raw/root_ca" tools:ignore="NetworkSecurityConfig" /> </trust-anchors> </debug-overrides> </network-security-config> |
このポイントは debug-overrides という点です。
これにより、開発用の証明書が許可されるようになります。
そして app/src/main/res/raw にルート証明書ファイル(例では root_ca)をコピーして配置します。
これで完了です。
これでビルドすると、開発時にルート証明書を利用してローカル環境のSSL接続でも証明書が正しいと判断されます。
ただし、プログラムをGitで管理している場合、下記のように証明書を監視対象から外してください。
1 2 3 4 |
# Root CA File /app/src/main/res/raw/{配置した証明書ファイル名} |
さいごに
SSL接続が当たり前になった世の中ですが、開発環境では正しいSSL証明書が発行できません。
しかし、この方法ならローカル環境のSSL接続でも問題なくできます。
ぜひ活用してみてください。
- おすすめ記事
-
-
のえる2020.07.13
-
Androidアプリ開発で画像を加工するならuCrop(注意点あり
のえる2020.07.29
-
POPULAR
のえる
Full-stack Developer