Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы<12
Опции
К последнему сообщению К первому непрочитанному
Offline Григорий812  
#11 Оставлено : 11 августа 2021 г. 17:20:07(UTC)
Григорий812

Статус: Участник

Группы: Участники
Зарегистрирован: 05.08.2021(UTC)
Сообщений: 16
Российская Федерация
Откуда: Воронеж

Сказал(а) «Спасибо»: 1 раз
Автор: Евгений Афанасьев Перейти к цитате
В последнем релизе в ACSP в панели видно имя считывателя под именем контейнера. Проверьте, что оно тоже "Aktiv Rutoken ECP 1".


"Aktiv Rutoken ECP 1" - совпадает.
Да и собственно я именно опросом хранилищ и находящихся в них контейнеров имя хранилища и алиас контейнера и получал.

А есть ли где до пример корректного использования рутокена для подписи?

Отредактировано пользователем 11 августа 2021 г. 17:21:12(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#12 Оставлено : 11 августа 2021 г. 17:21:21(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,910
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
А сертификат есть в контейнере? Просматривается в ACSP?
Offline Григорий812  
#13 Оставлено : 11 августа 2021 г. 17:28:31(UTC)
Григорий812

Статус: Участник

Группы: Участники
Зарегистрирован: 05.08.2021(UTC)
Сообщений: 16
Российская Федерация
Откуда: Воронеж

Сказал(а) «Спасибо»: 1 раз
Автор: Евгений Афанасьев Перейти к цитате
А сертификат есть в контейнере? Просматривается в ACSP?

Да сертификат лежит.

С этой флешкой другое приложение (КрипоАРМ ГОСТ) успешно файл подписало, но к сожалению нужно именно с внутренним провайдером (раз интенты отменили).

Ошибка явно в моем коде:

Возможно в указании хранилища, или задания параметров адаптера (остальное вроде 1:1 как в примерах)

Код:
 if(useItem == 1 ){
            // подключенный рутоен
            alias = "Kab00";
            store = "Aktiv Rutoken ECP 1";
        }else {
            // созданный в приложении контейнер
            alias = "Test81";
            store = "HDIMAGE";
        }

          String text =  "тестовый текст";

          //Указываем хранилище
          KeyStoreType.init(this);
          KeyStoreType.saveCurrentType(store);

          ContainerAdapter adapter = new ContainerAdapter(this, alias, false);
          adapter.setProviderType(ProviderType.currentProviderType());



ПС А можно ли как то получить данные о сертификатах имея данные о Хранилище и алиас Контейнера - дабы убедится что сертификат видится ?

Отредактировано пользователем 11 августа 2021 г. 17:30:12(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#14 Оставлено : 11 августа 2021 г. 17:37:42(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,910
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Можете проверить так?
Код:

KeyStore keyStore = KeyStore.getInstance("Aktiv Rutoken ECP 1", JCSP.PROVIDER_NAME);
keyStore.load(null, null);
Enumeration<String> aliases = keyStore.aliases();
распечатать aliases
Offline Григорий812  
#15 Оставлено : 11 августа 2021 г. 18:21:37(UTC)
Григорий812

Статус: Участник

Группы: Участники
Зарегистрирован: 05.08.2021(UTC)
Сообщений: 16
Российская Федерация
Откуда: Воронеж

Сказал(а) «Спасибо»: 1 раз
Автор: Евгений Афанасьев Перейти к цитате
Можете проверить так?
Код:

KeyStore keyStore = KeyStore.getInstance("Aktiv Rutoken ECP 1", JCSP.PROVIDER_NAME);
keyStore.load(null, null);
Enumeration<String> aliases = keyStore.aliases();
распечатать aliases


Посыпаю голову пеплом: как выяснилось я неверно вписал алиас контейнера (00 - OO),
контейнер видися , но функция подписи все еще выдает ошибку, теперь:

"Алгоритм ключа не соответствует алгоритму подписи"

Отредактировано пользователем 11 августа 2021 г. 19:29:27(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#16 Оставлено : 11 августа 2021 г. 19:01:25(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,910
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
А как вы подписываете, какой алгоритм подписи задается у Signature? Для ключа ГОСТ 2012 и алгоритм подписи должен быть 2012. Может, у вас тут разночтения.
Offline Григорий812  
#17 Оставлено : 11 августа 2021 г. 19:28:59(UTC)
Григорий812

Статус: Участник

Группы: Участники
Зарегистрирован: 05.08.2021(UTC)
Сообщений: 16
Российская Федерация
Откуда: Воронеж

Сказал(а) «Спасибо»: 1 раз
Автор: Евгений Афанасьев Перейти к цитате
А как вы подписываете, какой алгоритм подписи задается у Signature? Для ключа ГОСТ 2012 и алгоритм подписи должен быть 2012. Может, у вас тут разночтения.


С алгоритмом разобрался - да разночтение есть


В аписаниии сертификата в указано
ГОСТ Р 34.10-2012 (512)
А algorithmSelector.getSignatureAlgorithmName() в
Код:

Signature sn = Signature.getInstance(
                        algorithmSelector.getSignatureAlgorithmName(),
                        JCSP.PROVIDER_NAME);

выдает
GOST3411withGOST3410EL

Исправил вручную
Код:

                Signature sn = Signature.getInstance(
                        algorithmSelector.getSignatureAlgorithmName(),
                        JCSP.PROVIDER_NAME);
                sn = Signature.getInstance(
                        JCP.GOST_SIGN_2012_512_NAME,
                        JCSP.PROVIDER_NAME);



Так отработало.

Остались вопросы:
как верно определить алгоритм по контейнеру ( и корректно ли его задавать так в явно Signature.getInstance без algorithmSelector.getSignatureAlgorithmName())
и как создатьполучить самого файл sig ?

Отредактировано пользователем 11 августа 2021 г. 19:30:53(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#18 Оставлено : 11 августа 2021 г. 20:42:36(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,910
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
algorithmSelector.getSignatureAlgorithmName() заведен для удобства интерактивной проверки примеров, он опирается, скорее всего, на свойства списка алгоритмов на вкладке "Настройки". Определять алгоритм подписи можно по алгоритму ключа, например:
Код:

String keyAlg = key.getAlgorithm();
String sigAlg = getSignatureAlgByKeyAlg(keyAlg);
String getSignatureAlgByKeyAlg(String keyAlgName) {
  if (keyAlgName.equalsIgnoreCase(JCP.GOST_EL_2012_256_NAME) ||
    keyAlgName.equalsIgnoreCase(JCP.GOST_DH_2012_256_NAME)) {
    return JCP.GOST_SIGN_2012_256_NAME;
  }
  else if (keyAlgName.equalsIgnoreCase(JCP.GOST_EL_2012_512_NAME) ||
    keyAlgName.equalsIgnoreCase(JCP.GOST_DH_2012_512_NAME)) {
    return JCP.GOST_SIGN_2012_512_NAME;
  }
  return JCP.GOST_EL_SIGN_NAME;
}

Отредактировано пользователем 11 августа 2021 г. 20:43:44(UTC)  | Причина: Не указана

Offline Григорий812  
#19 Оставлено : 25 августа 2021 г. 14:48:29(UTC)
Григорий812

Статус: Участник

Группы: Участники
Зарегистрирован: 05.08.2021(UTC)
Сообщений: 16
Российская Федерация
Откуда: Воронеж

Сказал(а) «Спасибо»: 1 раз
Здравствуйте.

Еще раз спасибо за прошлые подсказки.
И хочется уточнить еще 1 момент:

как можно получить данные о сертификате которые демонстрирются в провайдере (ФИО и дата создания).

Сейчас получаю алиасы контейнера, сертификата, тип - для успешной подписи достаточно, но хотелось бы отобразить пользователю пристойные данные.


(перебор доступных рутокен сертификатов)
Код:

            for (int i = 0; i < KEY_STORE_ALIASES.length; i++) {
                
                    KeyStore keyStore = KeyStore.getInstance(KEY_STORE_ALIASES[i], JCSP.PROVIDER_NAME);
                    keyStore.load(null, null);

                    //обьектов внутри
                    int keyStoreSize = keyStore.size();

                    //перебор 
                    for (Enumeration<String> aliases = keyStore.aliases(); aliases.hasMoreElements(); ) {
                        String alias = aliases.nextElement();

                        Certificate certificate     = keyStore.getCertificate(alias);
                        String certificateType      = certificate.getType() ;

... ... ...

                    }

            }
Offline Евгений Афанасьев  
#20 Оставлено : 25 августа 2021 г. 15:25:34(UTC)
Евгений Афанасьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,910
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Если имеются в виду поля сертификата, где есть ФИО и срок действия, то надо объект сертификата certificate привести к X509Certificate, у него есть методы getNotBefore, getNotAfter, getSubject, getSerialNumber, getIssuer.

Отредактировано пользователем 25 августа 2021 г. 15:26:32(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы<12
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.