Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> SSL авторизация на сайте, через SSL с использованием SmartCard 
:(
    Опции темы
tigerkvv
Дата 18.7.2010, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть сайт https://misp.digilugu.ee/x/tto/
Авторизация производится с использованием SmartCard и соответственно кардридера. При подключенном кардридере и правильной карте при входе на сайт спрашивается ПИН код (видимо драйвер), потом уже надо выбрать сертификат из списка (это видимо уже браузер), только потом попадаешь на сайт.
Есть у меня кардридер и "правильная" карта, вручную захожу нормально.

Задача: авторизироваться и дальше работать с сайтом должна программа (используя подключенный кардридер и карту). 
Проблемы:
1. При считывании с карты сертификата почему-то требует ПИН2, а не ПИН1 как на сайте
Код

PKCS11SignatureFactory = new PKCS11SignatureFactory();
        try{
            
            PKCS11SignatureFactory.initPKCS11();
            
            String[] s = PKCS11SignatureFactory.getAvailableTokenNames();
            System.out.println("-- AvailableTokenNames: ");
            for (int i=0; i<s.length;i++){
                System.out.println(s[i]);
            }
            System.out.println("-- End AvailableTokenNames --");
            
            //X509Certificate = PKCS11SignatureFactory.getCertificate(0, "0001"); //PIN1
            X509Certificate = PKCS11SignatureFactory.getCertificate(0, "00002"); // PIN2
            System.out.println("X509Certificate: "+X509Certificate.toString());
        }catch(Exception e){
            System.out.println("ERROR 1 : " + e.getMessage());
        }

если раскоментировать строку с ПИН1, то говорит не верный ПИН
да и вывод AvailableTokenNames дает только 
Код

-- AvailableTokenNames: 
ANDRES LIND (PIN2)          
-- End AvailableTokenNames --


2. Дальше код который по идее должен брать сертификат полученный выше, вставлять в KeyStore. Потом KeyStore в SSLSocketFactory и подключение к сайту. Но авторизация не проходит. 

Код

       try{
        DefaultHttpClient httpclient = new DefaultHttpClient();
            
            KeyStore ks= KeyStore.getInstance("JKS", "SUN");
            ks.load(null, null);
            ks.setCertificateEntry("Xroad", X509Certificate);// вот тут первый параметр String alias, так и не понял для чего он нужен

            SSLSocketFactory socketFactory = new SSLSocketFactory(ks);
            Scheme sch = new Scheme("https", socketFactory, 443);
            httpclient.getConnectionManager().getSchemeRegistry().register(sch);

            HttpGet httpget = new HttpGet("https://misp.digilugu.ee/x/tto/");

            System.out.println("executing request" + httpget.getRequestLine());
            
            HttpResponse response = httpclient.execute(httpget); // тут возникает ошибка при запуске: peer not authenticated
            HttpEntity entity = response.getEntity();

            httpclient.getConnectionManager().shutdown();
        }catch(Exception e){
            System.out.println("ERROR 2 : " + e.getMessage());
        }


По идее, где-то тут еще надо ПИН указать, возможно надо использовать ks.setKeyEntry(alias, Key, pin, certChain), но что за ключ и алиас?

Что я делаю неправильно? Как еще можно решить задачу?

Это сообщение отредактировал(а) tigerkvv - 18.7.2010, 18:47
PM MAIL   Вверх
Alexandr87
Дата 22.7.2010, 06:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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




При аутентификации по SSL, помимо сертификата программа должна иметь доступ к ключу.
Вы сейчас с помощью класса PKCS11SignatureFactory, получаете доступ к токену, чтобы получить сертификат, после чего засовываете сертификат в KeyStore без ключа. SSL движок ключа не видит.


Как это делается правильно:
В состав JRE входит PKCS#11 криптопровайдер для работы с токенами и смарткарточками. Собственно его используете и не парите себе мозги.
http://download.oracle.com/docs/cd/E17476_...y/p11guide.html



PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




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


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

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