https で動作する必要がある Android アプリを作成しています。Server Name Indication extensionで TLS を使用しない https アドレスへの https 接続に問題はありません。ただし、SNI 拡張機能付きの TLS を使用する https アドレスへの接続を行う必要があります。
ホスト名拡張子なしで TLS を使用する https アドレスに対して私が行ったことは次のとおりです。
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://exampleurl.com/api");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("username", email));
nameValuePairs.add(new BasicNameValuePair("ssh_public_key", publickey));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
Log.d(TAG, response.toString());
return response.toString();
} catch (Exception e) {
Log.d(TAG, e.toString());
}
Android の TLS に Server Name Indication 拡張機能を追加するにはどうすればよいですか。調査の結果、stackoverflow に関する投稿を 1 つ見つけましたが、この情報で動作させることはできません。
しかし、それは少し道のりです「私が知る限り、Android SDK には部分的なサポートがあります。現在の状況は次のとおりです。
Gingerbread リリース以降、HttpsURLConnection API を使用した TLS 接続は SNI をサポートしています。Android に同梱されている Apache HTTP クライアント ライブラリは SNI をサポートしていません Android Web ブラウザは SNI もサポートしていません (Apache HTTP クライアント API を使用しているため)"
「助けてくれてありがとう。Android SDK で利用可能な SSLCONTEXT(TLS) と SSLENGINE クラスを使用して sni.velox.ch リンクを試しました。ハンドシェイクを取得しています。」
This postは、これがAndroidで機能するという答えを提供しますが、HttpsURLConnection、SSLCONTEXT(TLS)、およびSSLENGINEでそれを行う方法がわかりません。
TLS で Server Name Indication 拡張機能を設定する方法のコード例を提供できる機関はありますか?