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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline Ann1_2020  
#1 Оставлено : 11 ноября 2020 г. 11:48:35(UTC)
Ann1_2020

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

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

При поптыке подписать данные сертификатом, получаю ошибку u.CryptoPro.AdES.exception.AdESException: Error building certification path for ...
При этом подпись для другого сертификата работает.

Код:
CAdESSignature sign = new CAdESSignature(true);
            sign.setCertificateStore(new CollectionStore(
                certChain.stream().map(it -> { //List<X509Certificate> certChain
                    try {
                        return new X509CertificateHolder(it.getEncoded());
                    } catch (Exception e) {
                        throw new RuntimeException("Failed", e);
                    }
                }).collect(Collectors.toList())
            ));
            sign.addSigner(JCP.PROVIDER_NAME,
                privateKey,
                certChain,
                CAdESType.CAdES_BES,
                null,
                false,
                attrTable,
                null
            );


Ошибка возникает при выполнение sign.addSigner
Offline Евгений Афанасьев  
#2 Оставлено : 11 ноября 2020 г. 11:59:49(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Здравствуйте. Не строится цепочка. Цепочка более чем из двух сертификатов? Промежуточные сертификаты тоже есть в certChain, сертификаты не просрочены, корневой установлен в cacerts?
Offline Ann1_2020  
#3 Оставлено : 11 ноября 2020 г. 12:08:05(UTC)
Ann1_2020

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

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

Нет, цепочка из одного сертификата. У меня есть несколько сертификатов, с помощью одного я могу подписать все без ошибок, а вот со вторым возникает ошибка.
Какие именно промежуточные и корневые сертификаты нужны? У меня есть папка с названием SomeCert.001, в которой лежат файлы header.key, masks.key, masks2.key, name.key, primary.key, primary2.key. И аналогичная папка для второго сертификата AnotherCert.001.

До этого я выполняла:
Код:
# Добавление корневого сертификата Минкомсвязи в список доверенных
RUN keytool -import -cacerts -storepass changeit -noprompt -alias minkomsvyaz -file /guc_gost12.crt
# Тестовый УЦ КриптоПро
RUN keytool -import -cacerts -storepass changeit -noprompt -alias cryptopro-test -file /cryptopro-test-ca.cer
Offline Евгений Афанасьев  
#4 Оставлено : 11 ноября 2020 г. 22:46:40(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Возможно, тот сертификат, с которым нет проблем, образует короткую цепочку из двух сертификатов - себя и корневого, уже установленного в cacerts. А для второго требуются промежуточные сертификаты помимо корневого. Промежуточные сертификаты обычно доступны на сайте издателя, их можно скачать и
1. прочитать из файлов и подать в addSigner вместе с сертификатом подписи
или
2. установить полную цепочку сертификатов в ключевой контейнер, читать её с помощью keystore.getCertificateChain и тоже передавать в addSigner
или
3. как корневой, установить в cacerts.
Или
4. если ссылки на сертификаты издателей присутствуют в расширении AIA сертификата и есть доступ в сеть, то могут помочь параметры:

System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true");
System.setProperty("com.sun.security.enableAIAcaIssuers", "true");
и промежуточные сертификаты будут скачены, если возможно.

Отредактировано пользователем 11 ноября 2020 г. 22:51:53(UTC)  | Причина: Не указана

Offline Ann1_2020  
#5 Оставлено : 16 ноября 2020 г. 15:31:07(UTC)
Ann1_2020

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

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

Спасибо, перевыпустили сертификаты, ошибка пропала.
Теперь другая ошибка:
Код:
ru.CryptoPro.CAdES.exception.CAdESException: For online validation by CRLDP parameter 'com.sun.security.enableCRLDP' (Oracle) or 'com.ibm.security.enableCRLDP' (IBM) must be set 'true' to enable or 'ocsp.enable' must be set 'true' (OCSP), or CRL passed for offline validation


Хотя проверка вкючена:
Код:
System.setProperty("com.sun.security.enableCRLDP", "true");
System.setProperty("com.sun.security.enableAIAcaIssuers", "true");
System.setProperty("com.ibm.security.enableCRLDP", "true");
Offline Евгений Афанасьев  
#6 Оставлено : 16 ноября 2020 г. 15:58:28(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Полный лог можете приложить с ошибкой?
Offline Ann1_2020  
#7 Оставлено : 16 ноября 2020 г. 16:03:23(UTC)
Ann1_2020

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

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

Код:
 r.t.t.c.i.e.h.RestExceptionHandler : Something went wrong.


java.lang.RuntimeException: Error encountered signing content: For online validation by CRLDP parameter 'com.sun.security.enableCRLDP' (Oracle) or 'com.ibm.security.enableCRLDP' (IBM) must be set 'true' to enable or 'ocsp.enable' must be set 'true' (OCSP), or CRL passed for offline validation

at controller.CryptoFacadeServiceController$$FastClassBySpringCGLIB$$edaccb4d.invoke(<generated>)

at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)

at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:120)

at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)

at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)

at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)

at service.controller.CryptoFacadeServiceController$$EnhancerBySpringCGLIB$$be3d7e21.cryptoSign(<generated>)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.base/java.lang.reflect.Method.invoke(Method.java:566)

at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)

at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)

at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)

at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)

at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)

at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)

at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)

at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)

at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)

at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)

at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.web.filter.AbstractRequestLoggingFilter.doFilterInternal(AbstractRequestLoggingFilter.java:289)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at brave.servlet.TracingFilter.doFilter(TracingFilter.java:65)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)

at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)

at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:118)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)

at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)

at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)

at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:158)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)

at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)

at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:204)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)

at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)

at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:92)

at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:77)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)

at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)

at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)

at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)

at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)

at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)

at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.cloud.sleuth.instrument.web.ExceptionLoggingFilter.doFilter(ExceptionLoggingFilter.java:50)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at brave.servlet.TracingFilter.doFilter(TracingFilter.java:82)

at org.springframework.cloud.sleuth.instrument.web.LazyTracingFilter.doFilter(TraceWebServletAutoConfiguration.java:138)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:109)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)

at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)

at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)

at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)

at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639)

at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)

at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)

at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.base/java.lang.Thread.run(Thread.java:834)

Caused by: ru.CryptoPro.CAdES.exception.CAdESException: For online validation by CRLDP parameter 'com.sun.security.enableCRLDP' (Oracle) or 'com.ibm.security.enableCRLDP' (IBM) must be set 'true' to enable or 'ocsp.enable' must be set 'true' (OCSP), or CRL passed for offline validation

at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)

at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)

at ru.CryptoPro.CAdES.cl_1.addSigner(Unknown Source)

at service.provider.MyProvider.sign(MyProvider.java:123)

... 114 common frames omitted

Caused by: ru.CryptoPro.AdES.exception.AdESException: For online validation by CRLDP parameter 'com.sun.security.enableCRLDP' (Oracle) or 'com.ibm.security.enableCRLDP' (IBM) must be set 'true' to enable or 'ocsp.enable' must be set 'true' (OCSP), or CRL passed for offline validation

at ru.CryptoPro.AdES.certificate.BaseCertificateChainValidatorImpl.validate(Unknown Source)

at ru.CryptoPro.AdES.certificate.BaseCertificateChainValidatorImpl.validate(Unknown Source)

at ru.CryptoPro.AdES.certificate.BaseCertificateChainValidatorImpl.validate(Unknown Source)

... 118 common frames omitted

Caused by: java.security.cert.CertPathValidatorException: Could not determine revocation status

at java.base/sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:135)

at java.base/sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:237)

at java.base/sun.security.provider.certpath.PKIXCertPathValidator.validate(PKIXCertPathValidator.java:145)

at java.base/sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:84)

at java.base/java.security.cert.CertPathValidator.validate(CertPathValidator.java:309)

at ru.CryptoPro.reprov.CPCertPathValidator.engineValidate(Unknown Source)

at java.base/java.security.cert.CertPathValidator.validate(CertPathValidator.java:309)

... 121 common frames omitted

Caused by: java.security.cert.CertPathValidatorException: Could not determine revocation status

at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)

at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)

at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)

at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)

at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)

at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.a(Unknown Source)

at ru.CryptoPro.reprov.certpath.CrlRevocationChecker.check(Unknown Source)

at java.base/sun.security.provider.certpath.PKIXMasterCertPathValidator.validate(PKIXMasterCertPathValidator.java:125)

... 127 common frames omitted
Offline Евгений Афанасьев  
#8 Оставлено : 16 ноября 2020 г. 16:20:08(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Could not determine revocation status - не удаётся проверить цепочку сертификатов подписанта на отзыв. Может, в сертификате подписи или в промежуточных сертификатах нет CRLDP (точек распространения crl) для проверки статуса сертификата?
Offline Ann1_2020  
#9 Оставлено : 16 ноября 2020 г. 16:22:11(UTC)
Ann1_2020

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

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

А как это можно посмотреть?
Offline Евгений Афанасьев  
#10 Оставлено : 16 ноября 2020 г. 17:36:31(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Либо самим, открыть сертификат и глянуть, если ли ссылки на CRL в нем (в расширениях) и в промежуточных, если они будут отображены в цепочке; или включить логирование https://support.cryptopr...nlirovnija-kriptopro-jcp для JCPLogger с уровнем ALL и приложить лог, тело сертификата будет в логах; или приложите сертификат подписи, мы посмотрим.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
3 Страницы123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.