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

Https соединение с сертфикатам пользователя и сервера - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Ошибка: переполнение стека http://www.cyberforum.ru/android-dev/thread656830.html
Я хочу. чтоб при изменении текста в edittext1 изменялся текст в edittext2 и наоборот при изменении текста в edittext2 изменялся текст в edittext1 ed1.addTextChangedListener(new TextWatcher() ...
Программирование Android Что не так? Вот класс: public class ReadStringJson { public String url; public ReadStringJson(String url) { this.url = url; } public JSONArray readFromServer(){ http://www.cyberforum.ru/android-dev/thread656723.html
Автоматическое обновление текста Программирование Android
Как сделать, что бы текст в textview, менялся каждые 10 секунд
Как спроектировать приложение Программирование Android
Добрый день! Уважаемые разработчики, помогите определиться в выборе компонент, при закладке программы. Буду писать программу только для планшета, т.е. для Android ICS 4.0.0. и выше. До этого был...
Программирование Android Отправка POST запроса http://www.cyberforum.ru/android-dev/thread655680.html
Здраствуйте, нужно на сайт отправить пост запрос з логином і паролем, потом сайт оддаст строку, ее нужно вивсти в текствів, у меня есть код но он не работаєт: String result = new String(""); ...
Программирование Android admob Здравствуйте у меня такой вопрос по admob. у меня на admob есть уже доларов 19, в настройках указал данные карточки visa classic от сбербанка рублевая. сможет ли на неё причислять деньги или нужно... подробнее

Показать сообщение отдельно
obrazer
70 / 70 / 1
Регистрация: 04.09.2012
Сообщений: 170
26.09.2012, 23:27
Покопался тут чуть...
Вот чего понял (попытался понять, ибо проверить не на чем):
1. ключевой момент в этом месте
Java
1
2
3
final SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init( XXX , YYY , new java.security.SecureRandom());
final javax.net.ssl.SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
тут
XXX - X509KeyManager[] - набор менеджеров для работы с клиентскими сертификатами
YYY - X509TrustManager[] - набор менеджеров для работы с серверными сертификатами

В теме Получение JSON с https сервера имеется пример реализации интерфейса X509TrustManager.
Для X509KeyManager так же можно создавать реализацию интерфейса.
К примеру (очень грубо - не проверял) так
Java
1
2
3
final KeyManager[] ClientCerts = new KeyManager[] {new X509KeyManager() {
... Тут реализация всех методов интерфейса X509KeyManager
} };
В частности, на сколько сумел вкурить, для работы с сертификатом смотрим в сторону метода getCertificateChain(String alias). Что там с алиасами, честно говоря, не знаю. Вероятно надо реализовывать и другие методы, которые возвращают список алиасов и т.п.

Получение сертификата из файла (дабы вернуть его методом getCertificateChain):
Java
1
2
3
InputStream inStream = new FileInputStream("Имя файла с сертификатом");
X509Certificate cert = X509Certificate.getInstance(inStream);
inStream.close();
ps: в мануале имеется пример
Java
1
2
3
4
5
6
7
8
9
10
11
   KeyStore keyStore = ...;
   KeyManagerFactory kmf = KeyManagerFactory.getInstance("X509");
   kmf.init(keyStore);
 
   SSLContext context = SSLContext.getInstance("TLS");
   context.init(kmf.getKeyManagers(), null, null);
 
   URL url = new URL("https://www.example.com/");
   HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
   urlConnection.setSSLSocketFactory(context.getSocketFactory());
   InputStream in = urlConnection.getInputStream();
keyStore - класс работающий с хранилищем ключей и сертификатов.
Но, так или иначе, финальная работа ведется с набором KeyManager, полученных kmf.getKeyManagers(). Я же выше предлагаю написать свою реализацию X509KeyManager, который будет отдавать SSLContext-у сертификат.

Вроде как все сходится
Проверить не могу, а потому не уверен в своих рассуждениях.

ps: кстати, в мануале так и написано - "A X509KeyManager can also be implemented directly. This can allow an application to return a certificate and private key from a non-KeyStore source or to specify its own logic for selecting a specific credential to use when many may be present in a single KeyStore.". По-русски - "X509KeyManager также может быть реализован непосредственно. Это может позволить приложению вернуть сертификат и закрытый ключ от не-KeyStore источника или указать собственную логику для выбора конкретных учетных данных для использования если их может находиться много в одном хранилище ключей."
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru