次のコードに出くわしました(継承しました):
String ksType = KeyStore.getDefaultType();
KeyStore ks = KeyStore.getInstance(ksType);
ks.load(null, null);
SSLSocketFactory sockFactory = new SSLSocketFactory(ks);
メソッドの呼び出しに混乱していますKeyStore
load
。このコードはどのキーストアを使用していますか? 私は KeyStore のドキュメントを調べましたが、これが正当であると言える限りでは.
ただし、コードは機能しません。アプリは、サーバーが接続する URL を受け取ります。javax.net.ssl.SSLPeerUnverifiedException: No peer certificate
サイトに有効な SSL 証明書がある場合でも、アプリはエラーをスローします。
デバッグ、次の行を追加しました。
Log.v(TAG,"ks has " + String.valueOf(ks.size()) + " entries.");
キーストア内のアイテムの数を取得します。ゼロを返します。
KeyStores についてひどく誤解しているように感じます。
このコードは機能しますか? それは何をすることになっていますか?
EDIT
コードが(Webサイトを認証するために)どのように使用されているかに基づいて、キーストアではなくトラストストアとして使用されていると思います。SSLSocketFactory
から使用されているorg.apache.http.conn.ssl
。アプリのリソースを見ると、アプリにキーストア ファイルが含まれていないようです。私には不可解です。