Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
IntDroid
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 3
#1

TLS соединение - Программирование Android

04.07.2013, 20:43. Просмотров 996. Ответов 2
Метки нет (Все метки)

Всем привет!

Пытаюсь установить TLS соединение с gmail.com, но в итоге получаю javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path no found. В чём ошибка?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
try {
            KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
            
            TrustManagerFactory tmf = TrustManagerFactory.getInstance("X509");
            tmf.init(keyStore);
            
            SSLContext context = SSLContext.getInstance("TLS");
            context.init(null, tmf.getTrustManagers(), null);
            
            URL url = new URL("https://www.gmail.com/");
            HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
            urlConnection.setSSLSocketFactory(context.getSocketFactory());
            InputStream in = urlConnection.getInputStream();
        } catch (Exception e) {
            // ...
        }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.07.2013, 20:43     TLS соединение
Посмотрите здесь:

Соединение с БД - Программирование Android
Подаскажите пожалуйста, существует ли реляционная БД к которой можно нормально законнектить android устройство?

Соединение с БД - Программирование Android
Не могу найти хорошей статьи про соединение приложения с БД (не локальной). Есть сайт, и хочу к нему запилить приложение, и вот нужно...

Соединение с сервером Apache - Программирование Android
Здравствуйте не могу понять что делает setEntity() и последние 3 строки, вот ещё, например при ответе в браузер php генерирует html и в...

Проверить соединение с интернетом - Программирование Android
Здравствуйте! Столкнулся с такой проблемой, приложение устанавливает коннект с сервером (они общающийся время от времени пакетами...

Не работает TCP-соединение - Программирование Android
Помогите найти ошибку, код запускается, доходит до ServerSocket s = new ServerSocket(9999); дальше не работает, об...

Пропадает соединение с сервером - Программирование Android
Использую KryoNet Класс, который создает соединение с сервером, имплементирует Runnable, ибо нельзя в главном потоке создавать никаких...

Авторизированное http соединение (coockies) - Программирование Android
Здравствуйте, на сервере авторизация проверяется так: - проверяется есть ли куки (login & pass) - если есть присваивается статус...

Соединение с сервером, передача данных - Программирование Android
Добрый вечер. Такой вопрос: есть некая программа - сервер, написанная на С++ Qt. Там пара вкладок на ней пара ползунков. Это набросок,...

Https соединение с сертфикатам пользователя - Программирование Android
Доброго времени суток помогите разобраться с андроидами только начинаю дружить основа взята из инета мне нужно установить...

Https соединение с сертфикатам пользователя и сервера - Программирование Android
Добрый день. Есть следующая ситуация. Есть сервер, у него есть свой сертификат. Есть клиент, у него свой сертификат. Заходя через браузер...

Socket соединение между ПК и Планшетом и передача данных - Программирование Android
Доброго времени суток! Создаю socket соединение между ПК и планшетом: ПК - программа сервер (программа написана на Delphi -...

C++ приложение на Android ищу книжки про соединение приложения с сервером - Программирование Android
Самое не находимое это работа мобильного приложения через сеть, не могу сдвинуться ни на йоту из за своей безграмотности в Пониманий кода,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
V0v1k
1158 / 982 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
04.07.2013, 21:00     TLS соединение #2
для примера
Java
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
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.security.cert.CertificateException;
 
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
 
import org.json.JSONException;
import org.json.JSONObject;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
 
import android.text.TextUtils;
import android.util.Log;
 
 
public String executeHttpsGet(String uri) {
            Log. v(LOG_TAG, "Https request -" + uri);
            String strResponse = null;
            BufferedReader reader = null;
             try {
                   // Create a trust manager that does not validate certificate chains
                   final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
 
                         @Override
                         public void checkClientTrusted(
                                    java.security.cert.X509Certificate[] chain,
                                    String authType) throws CertificateException {
                               // TODO Auto-generated method stub
 
                        }
 
                         @Override
                         public void checkServerTrusted(
                                    java.security.cert.X509Certificate[] chain,
                                    String authType) throws CertificateException {
                               // TODO Auto-generated method stub
 
                        }
 
                         @Override
                         public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                               // TODO Auto-generated method stub
                               return null ;
                        }
 
                  } };
 
                   // Install the all-trusting trust manager
                   final SSLContext sslContext = SSLContext.getInstance("SSL");
                  sslContext.init( null, trustAllCerts,
                               new java.security.SecureRandom());
                   // Create an ssl socket factory with our all-trusting manager
                   final javax.net.ssl.SSLSocketFactory sslSocketFactory = sslContext
                              .getSocketFactory();
 
                   // All set up, we can get a resource through https now:
                   final URLConnection connection = new URL(uri).openConnection();
                   // Tell the url connection object to use our socket factory which
                   // bypasses security checks
                  ((HttpsURLConnection) connection)
                              .setSSLSocketFactory(sslSocketFactory);
 
                  reader = new BufferedReader(new InputStreamReader(
                              connection.getInputStream()));
 
                  StringBuffer sb = new StringBuffer("" );
                  String line = "";
                   while ((line = reader.readLine()) != null) {
                        sb.append(line);
                  }
                  strResponse = sb.toString();
                  Log. v(LOG_TAG, "response - " + strResponse);
 
            } catch (final Exception e) {
                  Log. v(LOG_TAG, "HttpsGet failed");
                  e.printStackTrace();
            } finally {
                   if (reader != null) {
                         try {
                              reader.close();
                        } catch (IOException e) {
                              e.printStackTrace();
                        }
                  }
            }
 
             return strResponse;
      }
IntDroid
0 / 0 / 0
Регистрация: 04.07.2013
Сообщений: 3
04.07.2013, 22:05  [ТС]     TLS соединение #3
V0v1k, спасибо, видел подобный пример, он работает. Но мне нужно с проверкой сертификата. Если я правильно понимаю суть ошибки, то проблема в типе KeyStore. И не понятно, какой KeyStore подключить, чтобы можно было корректно проверить сертификат.
Yandex
Объявления
04.07.2013, 22:05     TLS соединение
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru