サーバー用の自己署名証明書を生成しました。次に、それをAndroid with Settings-> Security-> Installに追加しました。
アプリケーションからサーバーに接続しようとすると、エラーが発生します。
Java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
信頼できるもののリストに証明書を追加した後に理解すると、それは正常に動作するはずです。何か不足していますか?アイデアは、Androidシステムを通じてアプリケーションコードを変更せずに証明書を追加することです。
ところで、ネットワーク接続にOkHttpClient
を使用しています。多分私はhttps
接続のために何かを有効にする必要がありますか?
Androidは、自己署名証明書を生成するときに、自分自身に署名するだけで証明書を発行する場合でも、証明書を認証する権限を与えるために、認証局としてマークすることが重要です。それ自体であると。
これはbasicConstraints
拡張で行われ、デフォルトのCA:TRUE
ではなくCA:FALSE
を宣言します。このようにマークされた証明書をインポートすると、Androidはそれをユーザーがインストールしたルート証明書と見なし、Credential storage>信頼できる資格情報>[〜#〜] user [〜#〜]。
ただし、このビットを持つ証明書は強力な力であり、このような証明書は、過去に暗号化されたと思われるユーザー通信をスパイするために悪意のあるツールによって使用されてきました。したがって、最近では、この種のCA証明書が有効になっている場合、Google PlayプロテクトはユーザーにWordを提供したいと考えています。