私は Android 8 (26 API、Oreo) で開発してandroid.webkit.WebView
おり、アプリで使用しています。
ページをロードするときに「安全なネットワーク接続」を実装しますWebView
(つまり、中間者の問題と自己署名証明書を回避します)
これを行うために、ネットワーク セキュリティ構成を使用しました (Android ではバージョン 7.0 N、24 API 以降)。
そう:
のres>xml>network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config>
<domain includeSubdomains="true">MY_DOMAIN.com</domain>
<pin-set>
<pin digest="SHA-256">MY_PIN</pin>
</pin-set>
</domain-config>
</network-security-config>
MY_PIN
ここに挿入していることがわかりましMY_DOMAIN.com
た: https://report-uri.com/home/pkp_hash
のmanifest>AndoridManifest.xml
...
<application
android:networkSecurityConfig="@xml/network_security_config"
...
</application>
私のアプリの onCreate では、次のようにします。
WebView webView = new WebView(this);
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(..)..
@Override
public void onPageFinished()..
...});
webView.loadUrl(MY_DOMAIN.com);
Androidのドキュメントによると、私はそれを正しくやっていますが、問題network_security_config.xml
があります.ピンにすべての「ランダム」および「間違った」値を設定でき、正常に動作するため、チェックされないようです(MY_DOMAIN.com
動作をブロックせずにURLが正常にロードされます) .
つまり、中間者がアプリケーションに記述しres>xml>network_security_config.xml
たピンとは異なる 1 つのピンを返した場合でも、安全な動作をせずに正常に動作し続けることを意味します。また、オーバーライドされた のエラー メソッドの 1 つも実行しませんWebViewClient
。
私のエラーを理解できないのを助けてください。