Статус: Участник
  Группы: Участники
 Зарегистрирован: 05.03.2020(UTC) Сообщений: 29   
	 
	
     | 
    
        
            
		      
                Добрый день! Имеется некоторый файл совмещенной подписи (подпись вместе с контентом:    response.rar  (3kb) загружен 9 раз(а).). Необходимо эту подпись проверить на Java. Через КриптоАРМ файл прекрасно открывается, можно просмотреть подпись и сам файл. На Java используем JCP и пробуем следующее: Код:new CAdESSignature(data, null, CAdESType.CAdES_BES); 
 Здесь data - массив байт исходного файла. Однако это выдает следующую ошибку: Цитата:Signer certificate reference is not found (signing-certificate-v2, signing-certificate and other-certificate are not found)  Насколько я понимаю, не может найти саму подпись. Возможно, это не CAdES_BES? Тогда как это посмотреть? Заранее спасибо!  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 740 раз в 698 постах
  
	 
	
     | 
    
        
            
		      
                Здравствуйте. Тогда попробуйте так, без типа: Код:
new CAdESSignature(data, null, null);
 
 т.к. CAdES-BES подразумевает наличие дополнительных атрибутов.    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 05.03.2020(UTC) Сообщений: 29   
	 
	
     | 
    
        
            
		      
                Код:new CAdESSignature(data, null, null) 
  не падает в ошибку. Однако, после этого проверить подпись не удается: Цитата:Error building certification path for *CERTIFICATE DETAILS*: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target  Сертификат для проверки добавлен в доверенные JVM с помощью keytool. Отредактировано пользователем 27 апреля 2020 г. 18:10:18(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 740 раз в 698 постах
  
	 
	
     | 
    
        
            
		      
                Если подпись не CAdES, то проверка все равно выполняется схожим образом: строится и проверяется цепочка сертификатов. В вашем случае надо поставить корневой сертификат цепочки в JRE/lib/security/cacerts. Если есть промежуточные сертификаты у цепочки и они не включены в подпись, то их надо тоже дать в verify(), чтобы цепочка могла построиться.    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 05.03.2020(UTC) Сообщений: 29   
	 
	
     | 
    
        
            
		      
                Автор: Евгений Афанасьев  Если подпись не CAdES, то проверка все равно выполняется схожим образом: строится и проверяется цепочка сертификатов. В вашем случае надо поставить корневой сертификат цепочки в JRE/lib/security/cacerts. Если есть промежуточные сертификаты у цепочки и они не включены в подпись, то их надо тоже дать в verify(), чтобы цепочка могла построиться.  При просмотре сертификата видна следующая цепочка:    Snimok.PNG  (7kb) загружен 11 раз(а).Каждый сертификат из этой цепочки был сохранен файл и с помощью keytool добавлен в JRE/lib/security/cacerts Затем, файлы сертификатов были загружены в Java как X509Certificate. В конечном итоге, Код:            cadesSignature.verify(new HashSet<>(certificates)); 
 выдает исключение: Signers not found; error codes: [8] 'Signature is invalid',   
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Участники
 Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,064  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 740 раз в 698 постах
  
	 
	
     | 
    
        
            
		      
                Приложите подпись в виде файла, посмотрим.    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 05.03.2020(UTC) Сообщений: 29   
	 
	
     | 
    
        
            
		      
                В первом сообщении темы приложен подписанный файл. Сертификаты я достал из него через КриптоАРМ 
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
            
        
            
            
    
        
	Статус: Сотрудник
  Группы: Администраторы, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,234  Сказал(а) «Спасибо»: 105 раз Поблагодарили: 296 раз в 276 постах
  
	 
	
     | 
    
        
            
		      
                файлы на стенде успешно проверяются. как вы читаете исходный файл подписи?    | 
 | 
            
	 
        
    
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
        
            
            
    
        
	Статус: Участник
  Группы: Участники
 Зарегистрирован: 05.03.2020(UTC) Сообщений: 29   
	 
	
     | 
    
        
            
		      
                Кажется, я разобрался. Если инициировать объект подписи так: Код:new CAdESSignature(data, null, null, false, false); 
 То подпись успешно проверяется, но потом не удается извлечь подписанные данные с ошибкой "Stream closed". Если инициировать так: Код:new CAdESSignature(data, null, null, false, true); 
 То данные успешно извлекаются, но подпись не проверяется. Таким образом, я прихожу к выводу, что jcp библиотека исключает возможность сначала проверить подпись, а потом получить подписанный контент. Приходится действовать в обратном порядке с вызовом ICAdESSignature.decode() Отредактировано пользователем 7 мая 2020 г. 16:01:48(UTC)
 | Причина: Не указана  
            
	  
         
     | 
    | 
         
             
     | 
    
         
            
         
     | 
    | 
        
	
     | 
        
        
        
    
	                           
	
    
        Быстрый переход
         
	
    
    Вы не можете создавать новые темы в этом форуме.
	
	Вы не можете отвечать в этом форуме.
	
	Вы не можете удалять Ваши сообщения в этом форуме.
	
	Вы не можете редактировать Ваши сообщения в этом форуме.
	
	Вы не можете создавать опросы в этом форуме.
	
	Вы не можете голосовать в этом форуме.
	
	
    
    
        Important Information:
        The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
        
        
More Details
        Close