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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline i.arsanukaev  
#1 Оставлено : 27 марта 2015 г. 13:05:41(UTC)
i.arsanukaev

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

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

Сказал(а) «Спасибо»: 1 раз
Добрый день!

У меня задача проверить входящую Cades-подпись.
Использую jdk1.6.0_38, jcp.1.0.54.
Приведенный ниже код справляется со своей задачей, за исключением подписи (и подписываемого текста) во вложении.

Поднимается exception на строке
Код:

cadesSignature.verify(null, crlList);


Код:

Error building certification path for <далее данные сертификата подписи>: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target, errors: 'PKIX failure: invalid certificate parameters' (33)
	at ru.CryptoPro.CAdES.b.d.b.a(Unknown Source)
	at ru.CryptoPro.CAdES.b.d.b.a(Unknown Source)
	at ru.CryptoPro.CAdES.b.d.a.a(Unknown Source)
	at ru.CryptoPro.CAdES.CAdESSigner.a(Unknown Source)
	at ru.CryptoPro.CAdES.CAdESSignature.a(Unknown Source)
	at ru.CryptoPro.CAdES.CAdESSignature.verify(Unknown Source)
	at ru.bm.ws.cryptoprowrk.check.CryptoProVerify.verify(CryptoProVerify.java:98)
	at ru.bm.ws.cryptoprowrk.check.CryptoProVerify.main(CryptoProVerify.java:153)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)




Код:

            if (messageBase64 == null) {
                throw new NullPointerException("Ошибка - подписанное сообщение пусто.");
            }

            if (signatureBase64 == null) {
                throw new NullPointerException("Ошибка - пустая подпись сообщения.");
            }

            byte[] message = null;

            try {
                message = Base64.decode(messageBase64.getBytes());
            } catch (Exception e) {
                throw new Exception("Ошибка - сообщение должно быть в формате Base64");
            }

            byte[] signature = null;

            try {
                signature = Base64.decode(signatureBase64.getBytes());
            } catch (Exception e) {
                throw new Exception("Ошибка - подпись должна быть в формате Base64");
            }


            // Подпись в тесте была совмещенная, потому данные равны null. Предположим, что
            // подписей несколько, тогда лучше указать тип null и положиться на самоопределение
            // типа подписи.
            CAdESSignature cadesSignature = new CAdESSignature(signature, message, CAdESType.CAdES_BES);

            Configuration.printSignatureInfo(cadesSignature);
            

            System.setProperty("ru.CryptoPro.reprov.enableCRLDP", "false");
            System.setProperty("com.sun.security.enableCRLDP", "false"); // для sun jvm
            System.setProperty("com.ibm.security.enableCRLDP", "false"); // или ibm jvm

            System.setProperty("ru.cryptopro.notThrowIfChainIsInvalid", "true");
            System.setProperty("ocsp.enable", "false");

            // Список CRL.
            List<X509CRL> crlList = new ArrayList<X509CRL>(3);

            // Если задан CRL, то читаем его из файла.

            crlList.add((X509CRL) CertificateFactory.getInstance("X.509")
                    .generateCRL(new FileInputStream(Configuration.CRL_FILENAME_1)));

            crlList.add((X509CRL) CertificateFactory.getInstance("X.509")
                    .generateCRL(new FileInputStream(Configuration.CRL_FILENAME_2)));

            crlList.add((X509CRL) CertificateFactory.getInstance("X.509")
                    .generateCRL(new FileInputStream(Configuration.CRL_FILENAME_3)));

            cadesSignature.verify(null, crlList);


Подскажите, в чем может быть проблема?
Сертификаты в хранилище добавлены, CRL свежие, на других подписях все работает.
Вложение(я):
27.03.2015.rar (9kb) загружен 6 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline i.arsanukaev  
#2 Оставлено : 30 марта 2015 г. 10:09:15(UTC)
i.arsanukaev

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

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

Сказал(а) «Спасибо»: 1 раз
Есть ли надежда на помощь?:)
Offline Евгений Афанасьев  
#3 Оставлено : 30 марта 2015 г. 10:50:11(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Здравствуйте.
Может быть, в сертификате подписи есть какое-нибудь незнакомое критическое расширение?
Offline i.arsanukaev  
#4 Оставлено : 30 марта 2015 г. 11:21:27(UTC)
i.arsanukaev

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: afev Перейти к цитате
Здравствуйте.
Может быть, в сертификате подписи есть какое-нибудь незнакомое критическое расширение?


Здравствуйте.
Во вложении 2 сертификата. Подпись, сделанная сертификатом cert_fail.cer, при проверке падает с ошибкой.
Вложение(я):
30.03.2015.rar (5kb) загружен 6 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Евгений Афанасьев  
#5 Оставлено : 30 марта 2015 г. 12:07:36(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Попробуйте включить логирование уровня FINE для JCP и собрать лог.
Offline i.arsanukaev  
#6 Оставлено : 30 марта 2015 г. 13:12:32(UTC)
i.arsanukaev

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: afev Перейти к цитате
Попробуйте включить логирование уровня FINE для JCP и собрать лог.


Лог во вложении.
Вложение(я):
log.log (56kb) загружен 8 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Евгений Афанасьев  
#7 Оставлено : 31 марта 2015 г. 10:51:50(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Из первого архива не удалось декодировать ResBase.base64 (в asn-редакторе тоже ошибки), для signatureResBase.base64 необходимо знать, какие данные подписывали (видимо, отделенная подпись).
Offline i.arsanukaev  
#8 Оставлено : 31 марта 2015 г. 11:11:05(UTC)
i.arsanukaev

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: afev Перейти к цитате
Из первого архива не удалось декодировать ResBase.base64 (в asn-редакторе тоже ошибки), для signatureResBase.base64 необходимо знать, какие данные подписывали (видимо, отделенная подпись).


Декодированные данные во вложении.
Странно. У меня получилось декодировать следующим кодом:

Код:
public static void main(String[] args) throws Exception {
        byte[] message = null;

        String xmlForSignSourceBase64 = FileUtils.readFileToString(new File("C:\\Users\\Arsanukaev_IZ\\Documents\\23.03.2015\\ResBase.base64"), "UTF-8");

        try {
            message = Base64.decode(xmlForSignSourceBase64.getBytes());
        } catch (Exception e) {
            throw new Exception("Ошибка - содержимое тега должно иметь формат Base64.");
        }


        FileOutputStream fos = new FileOutputStream("C:\\Users\\Arsanukaev_IZ\\Documents\\23.03.2015\\ResBase.decoded");
        fos.write(message);
        fos.close();


/*        String xmlForSignSource = new String(message);

        System.out.print(xmlForSignSource);*/
    }
Вложение(я):
ResBase.rar (3kb) загружен 6 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Евгений Афанасьев  
#9 Оставлено : 31 марта 2015 г. 11:45:16(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Я имел в виду asn-структуру, не base64.
Offline i.arsanukaev  
#10 Оставлено : 31 марта 2015 г. 12:31:41(UTC)
i.arsanukaev

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: afev Перейти к цитате
Я имел в виду asn-структуру, не base64.


Подписывали данные ResBase.decoded из архива из предыдущего сообщения.
Я проверяю здесь -
http://www.gosuslugi.ru/pgu/eds/
Тип подписи -
— электронного документа. ЭП — отсоединенная, в формате PKCS#7
указываю два файла из вложения. Проверка проходит.
Делаю то же самое через свое приложение - выходит ошибка.
Вложение(я):
31.03.2015.rar (7kb) загружен 5 раз(а).

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