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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ozhdanov  
#1 Оставлено : 12 ноября 2018 г. 15:50:24(UTC)
ozhdanov

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

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

Сказал(а) «Спасибо»: 6 раз
Добрый день! Есть ли примеры samples-sources для работы с новыми ГОСТами.
Конкретно интересует пример для подписи xml XMLSignDoc.java ("Формирование подписи всего XML-документа для алгоритма ГОСТ Р 34.10-2001".
При попытке подписать xml новыми алгоритмами возникает ошибка java.security.InvalidKeyException: Недопустимый тип ключа. Ключ получал в тестовом центре, новые госты он поддерживает. На старых алгоритмах ошибки нет. Спасибо!
Offline Aleksandr G*  
#2 Оставлено : 12 ноября 2018 г. 16:28:32(UTC)
Aleksandr G*

Статус: Активный участник

Группы: Участники
Зарегистрирован: 13.09.2016(UTC)
Сообщений: 126

Сказал(а) «Спасибо»: 8 раз
Поблагодарили: 35 раз в 28 постах
Посмотрите в теме: https://www.cryptopro.ru...aspx?g=posts&t=14889
thanks 1 пользователь поблагодарил Aleksandr G* за этот пост.
ozhdanov оставлено 13.11.2018(UTC)
Offline ozhdanov  
#3 Оставлено : 13 ноября 2018 г. 11:09:16(UTC)
ozhdanov

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Aleksandr G* Перейти к цитате
Посмотрите в теме: https://www.cryptopro.ru...aspx?g=posts&t=14889


Спасибо, эти параметры менял первым делом, но результата не дало.

Мои изменения в файле XMLSignDoc из примеров
Код:

public static void main(String[] args) {
    try {
        //подписываемый xml документ
        final String testDoc = "tests.xml";

        //подписанный xml документ
        final String signDoc = "XmlDSigDocument.xml";

        // алгоритм ГОСТ Р 34.10-2001 (для генерирования ключевой пары)
//        final String KeyPairAlgorithm = JCP.GOST_EL_DEGREE_NAME;
        final String KeyPairAlgorithm = JCP.GOST_EL_2012_256_NAME;

        // имя субъекта (оно же издателя) для генерирования самоподписанного сертификата
//        final String certName = "CN=Alias, O=CryptoPro, C=RU";
        final String certName = "CN=CRYPTO-PRO Test Center 2, O=CRYPTO-PRO LLC, C=RU";

        // алгоритм подписи (ГОСТ Р 34.10-2001)
//        final String signMethod =
//                "http://www.w3.org/2001/04/xmldsig-more#gostr34102001-gostr3411";
        final String signMethod =
                "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256";

        // алгоритм хеширования, используемый при подписи (ГОСТ Р 34.11-94)
//        final String digestMethod =
//                "http://www.w3.org/2001/04/xmldsig-more#gostr3411";
        final String digestMethod =
                "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256";

        /* В первую очередь осуществляет регистрация алгоритма подписи ГОСТ Р 34.10-2001*/
//        JCPXMLDSigInit.init();
        XmlInit.init();

        Logger.getLogger("LOG").info("sign doc begin");
        signDoc(KeyPairAlgorithm, JCP.PROVIDER_NAME, JCP.GOST_EL_SIGN_NAME,
            JCP.PROVIDER_NAME, certName, signMethod, digestMethod, testDoc, signDoc);
        Logger.getLogger("LOG").info("sign doc end\nsign doc verify");
        signDocVer(signDoc);

    } catch (Exception e) {
        e.printStackTrace();
    }
}


Может дело в сертификате, в нем публичный ключ 2012 ГОСТа, а алгоритм подписи 2001
ключ
Offline Евгений Афанасьев  
#4 Оставлено : 13 ноября 2018 г. 12:07:13(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Здравствуйте. В сертификате алгоритм подписи - алгоритм подписи ключом УЦ, издавшим сертификат. Отношения к XML подписи не имеет.
thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
ozhdanov оставлено 13.11.2018(UTC)
Offline ozhdanov  
#5 Оставлено : 13 ноября 2018 г. 12:11:50(UTC)
ozhdanov

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Евгений Афанасьев Перейти к цитате
Здравствуйте. В сертификате алгоритм подписи - алгоритм подписи ключом УЦ, издавшим сертификат. Отношения к XML подписи не имеет.


Понял. Т.е. сертификат подходящий для подписи по новым алгоритмам и дело не в нём?
Offline Евгений Афанасьев  
#6 Оставлено : 13 ноября 2018 г. 16:53:24(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Да, открытый ключ в сертификате на картинке - ГОСТ 2012 (256).
На счет примера: если он используется в том виде, что приложен выше, то там алгоритм подписи - JCP.GOST_EL_SIGN_NAME, он передается для подписи запроса и, если у вас версия JCP не новая, может привести к ошибке подписи запроса на сертификат. Нужно либо указать JCP.GOST_SIGN_2012_256_NAME, либо установить версию jcp с сайта, где подобной проверки на соответствие алгоритма подписи и ключа нет.
Еще вы можете привести стек ошибки и законченный пример, попробуем его запустить.

Отредактировано пользователем 13 ноября 2018 г. 16:54:27(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
ozhdanov оставлено 14.11.2018(UTC)
Offline ozhdanov  
#7 Оставлено : 14 ноября 2018 г. 11:38:33(UTC)
ozhdanov

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

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

Сказал(а) «Спасибо»: 6 раз
Автор: Евгений Афанасьев Перейти к цитате
Да, открытый ключ в сертификате на картинке - ГОСТ 2012 (256).
На счет примера: если он используется в том виде, что приложен выше, то там алгоритм подписи - JCP.GOST_EL_SIGN_NAME, он передается для подписи запроса и, если у вас версия JCP не новая, может привести к ошибке подписи запроса на сертификат. Нужно либо указать JCP.GOST_SIGN_2012_256_NAME, либо установить версию jcp с сайта, где подобной проверки на соответствие алгоритма подписи и ключа нет.
Еще вы можете привести стек ошибки и законченный пример, попробуем его запустить.


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