| 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 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 На самом деле я просто не знаю как еще эту подпись можно проверить, вот и решил попробовать вашим верификатором    . | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-ПроСказал(а) «Спасибо»: 21 разПоблагодарили: 740 раз в 698 постах
 
 | 
            
		      
                В примере XAdESExample последовательно происходит создание и проверка. Проверяется штамп с помощью класса GostTimeStampVerificationProvider. Для построения цепочки потребуется файл хранилища корневых сертификатов (xadesTrustStore - в архиве он лежит в папке data). | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 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 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-ПроСказал(а) «Спасибо»: 21 разПоблагодарили: 740 раз в 698 постах
 
 | 
            
		      
                Либо по 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)
 | Причина: Не указана | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 16.10.2013(UTC)
 Сообщений: 56
 
 Сказал(а) «Спасибо»: 3 разПоблагодарили: 2 раз в 1 постах
 
 | 
            
		      
                afev, в общем не хочет у меня работать ваш пример проверки подписи, ошибку ту же выдает.
 У кого-нибудь получилось что-нибудь удачно заимпортировать на тестовый стенд ГИС ГМП, подписав импортируемую сущность примером, предложенным выше?
 | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-ПроСказал(а) «Спасибо»: 21 разПоблагодарили: 740 раз в 698 постах
 
 | 
            
		      
                В отладке посмотрите содержимое SunCertPathBuilderException - можно узнать больше подробностей об ошибке. | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 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)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-ПроСказал(а) «Спасибо»: 21 разПоблагодарили: 740 раз в 698 постах
 
 | 
            
		      
                Значит, не удается построить цепочку. Для какого сертификата строится цепочка? Попробуйте добавить сертификаты в intermCertsAndCrls (для отладки можно использовать GostPKIXCertificateValidationProvider). | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
        
            
            
    | 
	Статус: Активный участник
 Группы: Участники
Зарегистрирован: 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)
 | Причина: Не указана | 
    | 
             | 
            
         | 
    |  | 
        
        
        
            
        
            
            
    | 
	Статус: Сотрудник
 Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-ПроСказал(а) «Спасибо»: 21 разПоблагодарили: 740 раз в 698 постах
 
 | 
            
		      
                В этом посте  можно узнать, какой target сертификат в builderParams? и что в this.signatureProvider? Есть ли для target сертификата необходимые сертификаты в intermCertsAndCrls и корневой в builderParams (trust anchors)? | 
|  | 
    | 
             | 
            
         | 
    |  | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close