N Developer Preview のネットワーク セキュリティ構成機能のあらゆる側面をテストしようとしています。ほとんどは機能していますが、自己署名証明書のシナリオで困惑しています。
によるとドキュメントAndroid N は、他の証明書検証シナリオと同様に、PEM または DER ファイルで問題なく動作するはずです。ただし、私は自己署名証明書をあまり使用しておらず、これを機能させようとすると、証明書パス検証例外が発生し続けます。
テストでは、N エミュレーターからアクセスできる開発マシンで実行されている をサーバーとして使用していますthin
。自己署名証明書は開発マシンのブラウザーで機能し、thin
SSL なしで実行するように切り替えても、アプリは問題なくサーバーにアクセスできます。したがって、これは接続の問題ではありません。
私は以下の手順に従って自己署名証明書を作成しました。このサイト:
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"
によるとこのStack Overflowの回答ファイルはexample.crt
PEMファイルです。他の場所では、作成するための手順が書かれています。「結合されたPEM」ファイルしかし、私はこれら両方を試しましたが、うまくいきませんでした。
ネットワーク セキュリティ構成に関しては、<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 ファイルとして、生のリソースとして具体的に何を入力すればよいのでしょうか?
ベストアンサー1
example.crt
これは、質問に示されているスクリプトによって生成されたものを使用して、N Developer Preview 2 で機能しているようですopenssl
。現時点では、N Developer Preview 1 と比較して N Developer Preview 2 に変更があったため、変更が生じたと想定します。