powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Android [игнор отключен] [закрыт для гостей] / SSL android
1 сообщений из 1, страница 1 из 1
SSL android
    #37441075
0iP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
0iP
Гость
Всем привет!
Возникла проблема при посылке клиентского сертификата на сервер SSL. Как я понимаю он просто не воспринимает сертификат посылаемого андроидом. В дебагере появляется ошибка в строке HttpResponse response = sClient.execute(httpGet); следующего типа авторjava.net.SocketTimeoutException: Read timed out


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
 package  net.myhttps;

 import  java.io.*;
 import  java.security.*;

 import  javax.net.ssl.*;

 import  org.apache.http.*;
 import  org.apache.http.client.methods.HttpGet;
 import  org.apache.http.client.params.HttpClientParams;
 import  org.apache.http.conn.ClientConnectionManager;
 import  org.apache.http.conn.params.*;
 import  org.apache.http.conn.scheme.*;
 import  org.apache.http.conn.ssl.SSLSocketFactory;
 import  org.apache.http.impl.client.DefaultHttpClient;
 import  org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
 import  org.apache.http.params.*;

 import  android.app.Activity;
 import  android.os.Bundle;
 import  android.util.Log;
 import  android.webkit.WebView;
 import  android.widget.*;

 public   class  HttpsAppActivity  extends  Activity {
        TextView text;
        
        @Override
         public   void  onCreate(Bundle savedInstanceState) {
                 super .onCreate(savedInstanceState);
                setContentView(R.layout.main);  
                
                goo();
                
        }

         private   void  goo() {
                 try  {
                        // Установка корневого сертификата доверия

                        // Загружаем сертификат в доверенное хранилище
                        
                        
                        System.setProperty("javax.net.ssl.trustStore", "myTrustStore");
                        System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
                        System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
                        System.setProperty("javax.net.ssl.keyStore", "cl_sert.p12");
                        System.setProperty("javax.net.ssl.keyStorePassword", "newpasswd");
                        
                        
                        InputStream clientTruststoreIs = getResources().openRawResource(
                                        R.raw.trust_server); // Корневой сертификат сервера
                        KeyStore trustStore =  null ;
                        trustStore = KeyStore.getInstance("BKS");
                        trustStore.load(clientTruststoreIs, "killsews".toCharArray());

                        System.out.println("Loaded server certificates: "
                                        + trustStore.size());

                        // Инициализация сертификата в доверительном хранилище
                        TrustManagerFactory trustManagerFactory =  null ;
                        trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
                        trustManagerFactory.init(trustStore);

                        // Установка сертификата клиента

                        // Загрузка сертификата клиета
                        InputStream keyStoreStream = getResources().openRawResource(R.raw.cl_sert);
                        KeyStore keyStore =  null ;
                        keyStore = KeyStore.getInstance("PKCS12");
                        keyStore.load(keyStoreStream, "newpasswd".toCharArray());

                        System.out.println("Loaded client certificates: " + keyStore.size());
                        
                        
                        // Инициализация
                        KeyManagerFactory keyManagerFactory =  null ;
                        keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
                        keyManagerFactory.init(keyStore, "killsews".toCharArray());

                        // инициализировать SSLSocketFactory для использования сертификатов
                        SSLSocketFactory socketFactory =  null ;
                        //socketFactory = new SSLSocketFactory(keyStore, "killsews");
                        socketFactory =  new  SSLSocketFactory(SSLSocketFactory.TLS, keyStore, "", trustStore,  null ,  null );
                        
                        // Передача базовых параметров
                        HttpParams params =  new  BasicHttpParams();
                        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
                        HttpProtocolParams.setContentCharset(params, "UTF-8");
                        HttpProtocolParams.setUseExpectContinue(params, true);
                        HttpProtocolParams.setUserAgent(params, "Android app/1.0.0");

                        // Создаем пул
                        ConnPerRoute connPerRoute =  new  ConnPerRouteBean( 12 );
                        ConnManagerParams.setMaxConnectionsPerRoute(params, connPerRoute);
                        ConnManagerParams.setMaxTotalConnections(params,  20 );

                        // Задаем время
                        HttpConnectionParams.setStaleCheckingEnabled(params, false);
                        HttpConnectionParams.setConnectionTimeout(params,  20  *  1000 );
                        HttpConnectionParams.setSoTimeout(params,  20  *  1000 );
                        HttpConnectionParams.setSocketBufferSize(params,  8192 );

                        // Некоторые параметры
                        HttpClientParams.setRedirecting(params, false);

                        // Регистрируем http/s схему!
                        SchemeRegistry schReg =  new  SchemeRegistry();
                        schReg.register( new  Scheme("http", PlainSocketFactory.getSocketFactory(),  80 ));
                        schReg.register( new  Scheme("https", socketFactory,  443 ));
                        ClientConnectionManager conMgr =  new  ThreadSafeClientConnManager(params, schReg);
                        DefaultHttpClient sClient =  new  DefaultHttpClient(conMgr, params);

                        HttpGet httpGet =  new  HttpGet("https://10.2.37.7/svg_cashe/fragment.txt");
                                        
                        HttpResponse response = sClient.execute(httpGet);
                        HttpEntity httpEntity = response.getEntity();

                        InputStream is = httpEntity.getContent();
                        BufferedReader read =  new  BufferedReader( new  InputStreamReader(is));
                        String data = "";
                        String query =  null ;
                         while  ((query = read.readLine()) !=  null ){
                                                        System.out.println(query);
                        }
                        
                        

                }  catch  (Exception e) {
        
                        Log.e("Error: ", e.toString());                 
                }

                
        }
}
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Android [игнор отключен] [закрыт для гостей] / SSL android
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]