N Developer Previewのネットワークセキュリティ設定機能のすべての側面をテストしようとしています。私はそのほとんどが働いていますが、私は自己署名証明書のシナリオに困惑しています。自己署名付き証明書のAndroid Nネットワークセキュリティ設定には何が使用されますか?
the docsによれば、他の証明書の検証シナリオと同じように、Android NはPEMまたはDERファイルに満足しているはずです。しかし、私は自己署名証明書ではあまり動作しませんし、この作業を取得しようとする試みは証明書パス検証の例外を実行し続けます。
テスト用に、Nエミュレータで到達可能な私の開発マシン上で動作しているサーバとしてthin
を使用しています。自己署名証明書は開発マシンのブラウザで動作し、thin
SSLに切り替えると、アプリはサーバーに正常に到達できます。したがって、接続の問題ではありません。
は、私がthis site上の命令を使用して自己署名証明書を作成しました:
sudo openssl genrsa -out "/etc/[webserver]/ssl/example.key" 2048
sudo openssl req -new -key "/etc/[webserver]/ssl/example.key" \
-out "/etc/[webserver]/ssl/example.csr"
sudo openssl x509 -req -days 365 -in "/etc/[webserver]/ssl/example.csr" \
-signkey "/etc/[webserver]/ssl/example.key" \
-out "/etc/[webserver]/ssl/example.crt"
this Stack Overflow answerによると、example.crt
ファイルは、PEMファイルです。他の場所では、a "combined PEM" fileを作成する手順が表示されます。しかし、私は運がないこれらの両方を試しました。
ネットワークセキュリティ設定の面では、<domain-config>
と<debug-overrides>
の両方を試しました。後者は次のようになります。
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<debug-overrides>
<trust-anchors>
<certificates src="@raw/selfsigned"/>
</trust-anchors>
</debug-overrides>
</network-security-config>
ただし、どちらの場合でも検証エラーが発生します。
PEMファイルまたはDERファイルとして、生のリソースとして入力する必要があります。
あなたは 'android:debuggable = true'を追加しましたか? –
@PrerakSola:私は一連の製品の味からテストしていますが、私は常にビルドの種類として 'debug'を使用しています。 – CommonsWare
私は、あなたが概説したように自己署名証明書を生成することでこれを試してみました。私はexample.crtファイルをコピーし、それを生のリソースフォルダに入れて、拡張子を削除しました。唯一の大きな違いは、WebサーバーとしてTomcatをローカルに実行していることです。重複チェックの1つは、 'AndroidManifest.xml'ファイルにメタデータ要素を追加したことです。証明書はxmlファイルの ''、 ''、または ''のいずれかで動作しました。 –