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

Уведомление

Icon
Error

16 Страницы«<678910>»
Опции
К последнему сообщению К первому непрочитанному
Offline ARnikev  
#71 Оставлено : 22 июня 2015 г. 15:49:35(UTC)
ARnikev

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 1 постах
Автор: afev Перейти к цитате
У cannot validate TSA certificate должна быть причина (в стек трейсе). Возможно, она в том, что у TSA службы EKU не критический. В примере validate в классе проверки штампа вроде бы был закомментирован.

xades4j.providers.CannotBuildCertificationPathException: Trust anchors KeyStore has no trusted certificate entries
java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

На самом деле я просто не знаю как еще эту подпись можно проверить, вот и решил попробовать вашим верификатором Think .
Offline Евгений Афанасьев  
#72 Оставлено : 22 июня 2015 г. 15:53:46(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
В примере XAdESExample последовательно происходит создание и проверка. Проверяется штамп с помощью класса GostTimeStampVerificationProvider. Для построения цепочки потребуется файл хранилища корневых сертификатов (xadesTrustStore - в архиве он лежит в папке data).
Offline ARnikev  
#73 Оставлено : 22 июня 2015 г. 16:21:26(UTC)
ARnikev

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 1 постах
Автор: afev Перейти к цитате
В примере XAdESExample последовательно происходит создание и проверка. Проверяется штамп с помощью класса GostTimeStampVerificationProvider. Для построения цепочки потребуется файл хранилища корневых сертификатов (xadesTrustStore - в архиве он лежит в папке data).

Да, разобрался.

Теперь вот такое выдает:

xades4j.providers.CannotBuildCertificationPathException: unable to find valid certification path to requested target
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
Offline Евгений Афанасьев  
#74 Оставлено : 22 июня 2015 г. 16:30:02(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Либо по CRL не удается проверить, либо не находит какой-то из сертификатов цепочки.
Для проверки по CRL в примере используется:
Код:

System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");

и
Код:

final CertificateValidationProvider validationProvider =
new PKIXCertificateValidationProvider(trustStore, true(!), intermediateCertsAndCRLStore);

Можно отключить проверку (false) или передать CRL в intermediateCertsAndCRLStore.

Отредактировано пользователем 22 июня 2015 г. 16:30:34(UTC)  | Причина: Не указана

Offline ARnikev  
#75 Оставлено : 22 июня 2015 г. 16:57:58(UTC)
ARnikev

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 1 постах
afev, в общем не хочет у меня работать ваш пример проверки подписи, ошибку ту же выдает.

У кого-нибудь получилось что-нибудь удачно заимпортировать на тестовый стенд ГИС ГМП, подписав импортируемую сущность примером, предложенным выше?
Offline Евгений Афанасьев  
#76 Оставлено : 22 июня 2015 г. 17:36:02(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
В отладке посмотрите содержимое SunCertPathBuilderException - можно узнать больше подробностей об ошибке.
Offline ARnikev  
#77 Оставлено : 23 июня 2015 г. 11:26:39(UTC)
ARnikev

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 1 постах
Цитата:
Можно отключить проверку (false)


Когда ставлю здесь false:
Код:
final CertificateValidationProvider validationProvider = new PKIXCertificateValidationProvider(trustStore, false, intermediateCertsAndCRLStore);


Падает вот на этом месте:
Код:

 try
        {
            // Certificates to be used to build the certification path.
            // - The other certificates from the signature (e.g. from KeyInfo).
            if (otherCerts != null)
            {
                CollectionCertStoreParameters ccsp = new CollectionCertStoreParameters(otherCerts);
                CertStore othersCertStore = CertStore.getInstance("Collection", ccsp);
                builderParams.addCertStore(othersCertStore);
            }
            // - The external certificates/CRLs.
            for (int i = 0; i < intermCertsAndCrls.length; i++)
            {
                builderParams.addCertStore(intermCertsAndCrls[i]);
            }

            builderParams.setRevocationEnabled(revocationEnabled);
            builderParams.setMaxPathLength(maxPathLength);
            builderParams.setDate(validationDate);
            builderParams.setSigProvider(this.signatureProvider);

            ---->>>> builderRes = (PKIXCertPathBuilderResult) certPathBuilder.build(builderParams);
        }
        catch (CertPathBuilderException ex)
        {
            ---->>>> throw new CannotBuildCertificationPathException(certSelector, ex.getMessage(), ex);
        }


Где certSelector - мой сертификат. Конечный Exception - sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target.

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

Offline Евгений Афанасьев  
#78 Оставлено : 23 июня 2015 г. 11:31:22(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Значит, не удается построить цепочку. Для какого сертификата строится цепочка? Попробуйте добавить сертификаты в intermCertsAndCrls (для отладки можно использовать GostPKIXCertificateValidationProvider).
Offline ARnikev  
#79 Оставлено : 23 июня 2015 г. 11:39:23(UTC)
ARnikev

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

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

Сказал(а) «Спасибо»: 3 раз
Поблагодарили: 2 раз в 1 постах
Автор: afev Перейти к цитате
Значит, не удается построить цепочку. Для какого сертификата строится цепочка? Попробуйте добавить сертификаты в intermCertsAndCrls (для отладки можно использовать GostPKIXCertificateValidationProvider).

Я извиняюсь за мб мою тупость, я знаю как в теории проходит проверка ЭЦП, но что там проходит внутри вашего примера не сильно догоняю). Как понять для какого сертификата строится цепочка?
Вот как у меня метод проверки выглядит:

Код:

 // 1. Подписанный документ.
        final Document verifyDocument = signedMessage.getSOAPPart().getEnvelope().getOwnerDocument();

        // Узел с подписью (предположительно, один).
        final NodeList nl = verifyDocument.getElementsByTagNameNS(XMLSignature.XMLNS, "Signature");

        if (nl.getLength() == 0) {
            throw new Exception("Cannot find Signature element");
        } // if

        // 2. Сертификаты.

        // Хранилище корневых сертификатов.
        final KeyStore trustStore = GostXAdESUtility.
                loadCertStore("F:/work/GISGMPstuff/forum_xades/data/xadesTrustStore", "1".toCharArray());

        final CertStore intermediateCertsAndCRLStore = CertStore.getInstance("Collection",
                new CollectionCertStoreParameters(Collections.emptyList()));

        final CertificateValidationProvider validationProvider = new PKIXCertificateValidationProvider(trustStore, false, intermediateCertsAndCRLStore);

        final XadesVerificationProfile verProf = new XadesVerificationProfile(validationProvider)

                // time-stamp validation
                .withTimeStampTokenVerifier(new GostTimeStampVerificationProvider(
                        validationProvider,  XAdESConfig.CONFIG_2001_S.getDefaultProvider()))

                        // digest
                .withDigestEngineProvider(new DefaultMessageDigestProvider() {

                    @Override
                    public MessageDigest getEngine(String digestAlgorithmURI) throws UnsupportedAlgorithmException {

                        final String digestAlgOid = GostXAdESUtility.digestUri2Digest(digestAlgorithmURI);

                        try {
                            return MessageDigest.getInstance(digestAlgOid);
                        } catch (NoSuchAlgorithmException e) {
                            throw new UnsupportedAlgorithmException(e.getMessage(), digestAlgorithmURI, e);
                        }

                    }

                });

        // 3. Проверка подписи.

        final XadesVerifier verifier = verProf.newVerifier();
        final Element signatureElement = (Element) nl.item(0); // предположительно, один узел с подписью

        verifier.verify(signatureElement, null);

        System.out.println("Validation of XAdES-T completed.");


Подпись я создаю своим закрытым ключом и сертификатом естественно.

Отредактировано пользователем 23 июня 2015 г. 11:40:29(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#80 Оставлено : 23 июня 2015 г. 11:58:34(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
В этом посте можно узнать, какой target сертификат в builderParams? и что в this.signatureProvider? Есть ли для target сертификата необходимые сертификаты в intermCertsAndCrls и корневой в builderParams (trust anchors)?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
16 Страницы«<678910>»
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.