Android

Android 7 以降で mitmproxy が動作しない

原因

Android 7 (API Level 24) からセキュリティポリシーが変わり Chrome と Webview 以外についてはユーザーが登録した証明書を受け付けない仕様になったそうです。

対処方法

自分のアプリで受け付けるようにするにはネットワーク・セキュリティの設定をアプリに追加する必要があるようです。

1. ネットワーク・セキュリティの設定を記述した xml を作る

以下の xml を app/src/main/res/xml に作成します。ここでは network_security_config.xml とします。この設定は <debug-overrides>に囲まれているので、デバッグビルドのときにしか反映されないことに注意です。

<network-security-config>  
     <debug-overrides>  
          <trust-anchors>  
               <!-- Additionally trust user added CAs -->  
               <certificates src="user" />  
          </trust-anchors>  
     </debug-overrides>  
</network-security-config>

2. network_security_config.xml を AndroidManifest.xml から読み込まれるようにする

AndroidManifest.xml のApplication タグのところに android:networkSecurityConfig の設定を記述します。

<application
        android:name=".OrenoApp"
        android:networkSecurityConfig="@xml/network_security_config"
        >
        ...
</application>

3. これでビルドして試せばうまくいくはず

参考情報等