2012-08-18 36 views

Odpowiedz

16

Po wielu lekturach wymyśliłem odpowiedź.

całkiem dobry przewodnik jest tutaj: http://nelenkov.blogspot.no/2011/12/using-custom-certificate-trust-store-on.html

Teraz, ponieważ nie używam HTTPS, musiałem wymyślić nieco innego podejścia do uzyskania czystego gniazdo SSL z nowym kluczy:

KeyStore store = KeyStore.getInstance("BKS"); 
InputStream truststore = mainActivity.getResources().openRawResource(R.raw.trust); 
store.load(truststore, "PASSWORD".toCharArray()); 
TrustManagerFactory tmf = TrustManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); 
tmf.init(store); 
SSLContext context = SSLContext.getInstance("TLS"); 
context.init(null, tmf.getTrustManagers(), new SecureRandom()); 
Socket socket = context.getSocketFactory().createSocket(ip, port); 
7

Dodawanie certyfikatu do aplikacji nie jest zalecane. Będziesz mieć problemy z aktualizacją certyfikatu.

Pan spojrzał na:

Self-signed SSL acceptance on Android

HTTPS GET (SSL) with Android and self-signed server certificate
?

+0

Myślę, że kodowanie odcisku palca w aplikacji to dobry pomysł. Aktualizacja aplikacji do korzystania z nowego odcisku palca nie jest trudna i eliminuje wszystkie bzdury związane z CA. – CodesInChaos

+0

Przepraszam, ostatnio byłem okropnie zajęty. Sprawdzę to dzisiaj, zanim wygasa nagroda :) –

+0

Dałem ci +1 za linki. Oczywiście metody w tych linkach sprawiają, że aplikacja ufa KAŻDEMU, co z pewnością nie jest tym, czego szukałem. Mimo to może być interesująca dla osób w środowisku testowym. :) –

Powiązane problemy