Jeśli to tylko klient i serwer, można (i należy) używać SSL bez konieczności zakupu czegokolwiek. Kontrolujesz serwer i klienta, więc każdy powinien ufać tylko jednemu certyfikatowi, który należy do drugiego i nie potrzebujesz w tym celu urzędów certyfikacji.
Oto podejście wysokiego poziomu. Utwórz samopodpisany certyfikat SSL serwera i zainstaluj go na swoim serwerze sieciowym. Możesz użyć keytool dołączonego do zestawu SDK systemu Android w tym celu. Następnie utwórz klienta z podpisem własnym i zainstaluj go w aplikacji w niestandardowym magazynie kluczy dołączonym do aplikacji jako zasobu (keytool również to wygeneruje). Skonfiguruj serwer tak, aby wymagał uwierzytelniania SSL po stronie klienta i akceptuj tylko wygenerowany certyfikat klienta. Skonfiguruj klienta tak, aby korzystał z tego certyfikatu po stronie klienta w celu identyfikacji i zaakceptuj tylko jeden certyfikat po stronie serwera zainstalowany na serwerze dla tej części.
Krok po kroku jest o wiele dłuższą odpowiedzią, niż jest to tutaj uzasadnione. Proponuję robić to etapami, ponieważ w sieci dostępne są zasoby dotyczące sposobu radzenia sobie z samopodpisanym certyfikatem SSL w systemie Android, zarówno po stronie serwera, jak i klienta. W książce "Application Security for the Android Platform" opublikowanej przez O'Reilly'a znajduje się także pełny przegląd.
Będziesz normalnie przechowywać że świadectwo/prywatnego klucza w magazynie kluczy z kluczy sometype (a jeśli używasz Android) i kluczy będą szyfrowane. Szyfrowanie jest oparte na haśle, więc musisz albo (1) przechowywać to hasło w swoim kliencie, albo (2) zapytać użytkownika o hasło podczas uruchamiania aplikacji klienckiej. To, co musisz zrobić, zależy od Twojego zastosowania. Jeśli (2) jest akceptowalne, chroniłeś swoje referencje przed inżynierią wsteczną, ponieważ będzie ona zaszyfrowana, a hasło nie będzie przechowywane nigdzie (ale użytkownik będzie musiał wpisać to za każdym razem). Jeśli to zrobisz (1), wtedy ktoś będzie mógł wykonać inżynierię wsteczną, uzyskać hasło, pobrać magazyn kluczy, odszyfrować klucz prywatny i certyfikat oraz utworzyć kolejnego klienta, który będzie mógł połączyć się z serwerem.
Nic nie możesz zrobić, aby temu zapobiec; możesz sprawić, że inżynieria odwrotna będzie ciężej (przez zaciemnianie, itp.), ale nie możesz uniemożliwić. Musisz określić, jakie ryzyko próbujesz złagodzić za pomocą tych metod i ile pracy warto wykonać, aby je złagodzić.
Co na przykład na [to] (http://www.javaranch.com/journal/200603/WSSecurity.html)? – loscuropresagio