SSL-аутентификация клиента в Android - PullRequest
3 голосов
/ 01 мая 2011

Мне нужно написать приложение для Android, которое будет общаться с сервисом .Net.Я должен сделать проверку подлинности сервера / клиента.Я нашел несколько полезных тем ( этот блог и этот блог ), но они оба показывают, как сделать проверку подлинности сервера.Как я могу сделать аутентификацию клиента?Я нашел полезное обсуждение , но там автор использует Sockets, но мне нужно сделать это через HttpClient.

1 Ответ

4 голосов
/ 17 мая 2011

следующее позволяет мне использовать мои собственные сертификаты rootca и client + server.т. е. безопасность, не платя никому денег :-)

создайте свою rootca, а также ключи и сертификаты клиента и сервера, используя openssl (много обучающих программ для этого в Интернете)

создайте rootcacert.bks, используя keytoolс bouncycastle в качестве поставщика и -importcert

создайте clientcertandkey.p12 с помощью openssl pkcs12 -export ...

HttpClient httpClient = null;
try {
    HttpParams httpParameters = new BasicHttpParams();
    KeyStore rootca = KeyStore.getInstance("BKS");
    rootca.load(getResources().openRawResource(R.raw.rootcacert),"bkskeystorepass".toCharArray());
    KeyStore mycert = KeyStore.getInstance("pkcs12");
    mycert.load(getResources().openRawResource(R.raw.clientcertandkey),"pkcs12storepass".toCharArray());
    SSLSocketFactory sockfact = new SSLSocketFactory(mycert,null,rootca);
    SchemeRegistry registry = new SchemeRegistry();
    registry.register(new Scheme("https",sockfact , 443));
    httpClient = new DefaultHttpClient(new ThreadSafeClientConnManager(httpParameters, registry), httpParameters);
} catch (Exception e) {
    e.printStackTrace();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...