Модераторы: javastic, W0LF, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SSL соединение в J2ME, Загрузка дов. сертификатов из InputStrea 
:(
    Опции темы
HugeX
Дата 9.6.2010, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.9.2009

Репутация: нет
Всего: нет



Всем добрый день!
Мне необходимо подключиться к серверу по SSL с телефона. Остановился я на том, что не могу загрузить доверенные сертификаты из InputStream.
Кто знает, помогите, пожалуйста. Ниже привожу пример своего кода:
Код

                    StreamConnection sc = (StreamConnection) Connector.open("socket://localhost:9090");

                    CertStore cs = new CertStore() {
                        public X509Certificate[] getCertificates(String string) {
                            X509Certificate[] certs = new X509Certificate[1];
                            InputStream is = this.getClass().getResourceAsStream("/trustStore.jks");
                            //???
                            return certs;
                        }
                    };

                    SSLStreamConnection.setTrustedCertStore(cs);
                    SSLStreamConnection sslsc = new SSLStreamConnection("localhost", 9090, sc.openInputStream(), sc.openOutputStream());
                    sc.close();

                    InputStream is = sslsc.openInputStream();
                    OutputStream os = sslsc.openOutputStream();

                    os.write(("Hello!").getBytes());

                    is.close();
                    os.close();
                    sslsc.close();

PM MAIL   Вверх
W0LF
Дата 9.6.2010, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Комодератор
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20





--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
HugeX
Дата 9.6.2010, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.9.2009

Репутация: нет
Всего: нет



Это не выход, все равно надо указать, какие сертификаты использовать.
PM MAIL   Вверх
ivanovpv
Дата 9.6.2010, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 10
Всего: 28



А где у вас сидит файл "trustStore.jks"? Можно увидеть подробно?



--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
HugeX
Дата 9.6.2010, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.9.2009

Репутация: нет
Всего: нет



Лежит он в корне jar'a, но вопрос ведь не в этом, так как InputStream я для него получаю, как для ресурса.
PM MAIL   Вверх
HugeX
Дата 10.6.2010, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.9.2009

Репутация: нет
Всего: нет



Все оказалось довольно просто smile Ниже приведена окончательная версия создания объекта класса CertStore, файл terminal.cer в формате DER или PEM:
Код

                    CertStore cs = new CertStore() {
                        public X509Certificate[] getCertificates(String string) {
                            try {
                                X509Certificate[] certs = new X509Certificate[1];
                                InputStream is = this.getClass().getResourceAsStream("/terminal.cer");
                                byte[] data = new byte[is.available()];
                                is.read(data);
                                certs[0] = X509Certificate.generateCertificate(data, 0, data.length);
                                return certs;
                            } catch (Exception ex) {
                                ex.printStackTrace();
                                return null;
                            }
                        }
                    };

PM MAIL   Вверх
Dummy
Дата 10.6.2010, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 7
Всего: 19



HugeX, у вас что за платформа? Хилые MIDP-телефоны в принципе не знают таких вещей, как CertStore и X509Certificate. На Blackberry тоже не похоже.

Это сообщение отредактировал(а) Dummy - 10.6.2010, 12:28
PM MAIL   Вверх
HugeX
Дата 11.6.2010, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 19.9.2009

Репутация: нет
Всего: нет



Платформа MIDP-2.0, но сейчас уже подумываю переписать под MIDP-1.0. На данный момент есть это:
Код

                    StreamConnection sc = (StreamConnection) Connector.open("socket://77.120.121.228:9090");
                    KeyStore cs = new KeyStore() {
                        public Enumeration aliases() {
                            throw new UnsupportedOperationException("Not supported yet.");
                        }

                        public Certificate getCertificate(String string) {
                            try {
                                InputStream is = this.getClass().getResourceAsStream("/terminal.cer");
                                byte[] data = new byte[is.available()];
                                is.read(data);
                                return X509Certificate.generateCertificate(data, 0, data.length);
                            } catch (Exception ex) {
                                ex.printStackTrace();
                                return null;
                            }
                        }

                        public boolean containsAlias(String string) {
                            throw new UnsupportedOperationException("Not supported yet.");
                        }

                        public int size() {
                            throw new UnsupportedOperationException("Not supported yet.");
                        }

                        public String getType() {
                            throw new UnsupportedOperationException("Not supported yet.");
                        }
                    };

                    SSLStreamConnection.setTrustedKeyStore(cs);
                    SSLStreamConnection sslsc = new SSLStreamConnection("77.120.121.228", 9090, sc.openInputStream(), sc.openOutputStream());
                    sc.close();

                    InputStream is = sslsc.openInputStream();
                    OutputStream os = sslsc.openOutputStream();

                    os.write(("Hello!").getBytes());

                    is.close();
                    os.close();
                    sslsc.close();

Использую классы com.sun.ksecurity.Certificate и com.sun.ksecurity.KeyStore, но, к сожалению, вываливает Exception NoClassDefFound для KeyStore :(

Это сообщение отредактировал(а) HugeX - 11.6.2010, 10:27
PM MAIL   Вверх
Dummy
Дата 11.6.2010, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 21.5.2007

Репутация: 7
Всего: 19



Если под MIDP, то, я боюсь, классы com.sun.* не наш метод. Если это, конечно, не какая-нибудь pure-java реализация SSL.
PM MAIL   Вверх
MjavTheGray
Дата 23.11.2012, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 22.11.2011

Репутация: нет
Всего: нет



И вот прошли годы и годы с последнего поста в эту тему... Кто-то живой их тех, кто ещё остался здесь?...
PM MAIL   Вверх
Google
  Дата 22.11.2017, 22:53 (ссылка)  





  Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0859 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.