RSS
AUT011005: "Ошибка формата подписи запроса" после 14.06.2017
 
Здравствуйте. После обновления 14.06.2017 на все запросы возвращается данная ошибка. На нашей стороне ничего не поменялось - ни код, подписывающий запросы, ни сертификат. Сталкивался кто-нибудь с данной проблемой после обновления? Удалось решить?
 
Доброго. Даже не знаю что сказать, описание новой версии ГИС еще не читал. Сомневаюсь, что формат подписи изменили в 11.1.x, "некруглой" версии. По описанию проблемы - выглядит как глюк ГИС, но тогда наверно было бы больше сообщений об этом.
Наводящие вопросы: что используете для формирования подписи - Java, dotNet или что-то другое? И Java и dotNet представляют собой обновляемые платформы для Вашего кода, даже если не меняли свой код, изменение платформы может сказаться на его работе. Соответственно вопрос не обновлялись ли Java, dotNet ближайшие дни? Не обновлялся ли криптопровайдер? Не менялись ли настройки криптопровайдера/Java, dotNet? Какие-то другие обновления операционной системы (ос) затрагивающие интернет соединения или криптоядро ос не ставились? Бывают случаи когда обновления ос сбивают регистрацию библиотек криптопровайдера (номера алгоритмов частично пересекаются) и хотя криптоядро ос не умеет работать с ГОСТ, но пытается.

Сертификату тоже не обязательно меняться. Не закончился ли сертификат? А сертификат удостоверяющего центра? Не лежит ли сайт удостоверяющего центра в отключке? Устанавливается ли защищенный тоннель с этим сертификатом? Например, по СМЭВ иногда не проходят проверку сообщения, когда федеральный узел смэв не может получить список отзыва или OCSP ответ от УЦ. И хотя у нас проверка проходит и ответ виден глазами в глубине XML, но SOAP-конверт "кричит" об ошибке, структура SOAP нарушена и вытащить оттуда данные проблематично.
Как видите, даже без ГИС, изменения кода и сертификата для успешного запроса нужно пройти длинную цепочку и сбой может оказаться в разных местах. Однако если ничего этого не подтвердилось - не забудьте написать в техподдержку ГИС, может это на их стороне Java обновилась или еще что.
 
у меня то же самое на арбитр.ру после обновления 06.06.2017. ошибка подписи.
 
Цитата
two_oceans пишет:
что используете для формирования подписи - Java, dotNet или что-то другое?
У нас самописное, для подписи используем openssl. А он вроде не обновлялся, посмотрел логи.
Цитата
two_oceans пишет:
не забудьте написать в техподдержку ГИС
Это я сделал.
Вот еще stacktrace, который присылается на тестовом стенде

[spoil:145zwlh8]ru.lanit.hcs.integration.common.exception.OperationProcessorException: ЭП не прошла проверку: Cannot find any certificates referenced by xades:SigningCertificate at ru.lanit.hcs.integration.common.spring.service.impl.ValidationServiceImpl.validateSignatureItself(ValidationServiceImpl.java:159) at ru.lanit.hcs.integration.common.spring.service.impl.ValidationServiceImpl.validateSignature(ValidationServiceImpl.java:111) at ru.lanit.hcs.integration.common.spring.mdp.SoapOperationProcessorInvokerMDP.process(SoapOperationProcessorInvokerMDP.java:370) at ru.lanit.hcs.integration.common.spring.mdp.SoapOperationProcessorInvokerMDP.internalOnMessage(SoapOperationProcessorInvokerMDP.java:258) at ru.lanit.hcs.integration.common.spring.mdp.SoapOperationProcessorInvokerMDP.onMessage(SoapOperationProcessorInvokerMDP.java:130) at org.springframework.jms.listener.AbstractMessageListenerContainer.doInvokeListener(AbstractMessageListenerContainer.java:746) at org.springframework.jms.listener.AbstractMessageListenerContainer.invokeListener(AbstractMessageListenerContainer.java:684) at org.springframework.jms.listener.AbstractMessageListenerContainer.doExecuteListener(AbstractMessageListenerContainer.java:651) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.doReceiveAndExecute(AbstractPollingMessageListenerContainer.java:317) at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:255) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1166) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.executeOngoingLoop(DefaultMessageListenerContainer.java:1158) at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1055) at java.lang.Thread.run(Thread.java:745) Caused by: ru.lanit.security.crypto.CryptoException: ЭП не прошла проверку: Cannot find any certificates referenced by xades:SigningCertificate at ru.lanit.security.crypto.verifier.VerifierBean.verifyEnveloped(VerifierBean.java:187) at sun.reflect.GeneratedMethodAccessor47.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.jboss.as.ee.component.ManagedReferenceMethodInterceptor.processInvocation(ManagedReferenceMethodInterceptor.java:52) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:374) at ru.lanit.security.crypto.xades.utils.SemaphoreInterceptor.check(SemaphoreInterceptor.java:49) at sun.reflect.GeneratedMethodAccessor28.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.jboss.as.ee.component.ManagedReferenceLifecycleMethodInterceptor.processInvocation(ManagedReferenceLifecycleMethodInterceptor.java:89) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.invocation.WeavedInterceptor.processInvocation(WeavedInterceptor.java:53) at org.jboss.as.ee.component.interceptors.UserInterceptorFactory$1.processInvocation(UserInterceptorFactory.java:63) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.as.ejb3.component.invocationmetrics.ExecutionTimeInterceptor.processInvocation(ExecutionTimeInterceptor.java:43) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.invocation.InitialInterceptor.processInvocation(InitialInterceptor.java:21) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) at org.jboss.as.ee.component.interceptors.ComponentDispatcherInterceptor.processInvocation(ComponentDispatcherInterceptor.java:53) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.as.ejb3.component.singleton.SingletonComponentInstanceAssociationInterceptor.processInvocation(SingletonComponentInstanceAssociationInterceptor.java:52) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInNoTx(CMTTxInterceptor.java:266) at org.jboss.as.ejb3.tx.CMTTxInterceptor.notSupported(CMTTxInterceptor.java:316) at org.jboss.as.ejb3.tx.CMTTxInterceptor.processInvocation(CMTTxInterceptor.java:240) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.as.ejb3.remote.EJBRemoteTransactionPropagatingInterceptor.processInvocation(EJBRemoteTransactionPropagatingInterceptor.java:79) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.as.ejb3.component.invocationmetrics.WaitTimeInterceptor.processInvocation(WaitTimeInterceptor.java:43) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.as.ejb3.component.interceptors.ShutDownInterceptorFactory$1.processInvocation(ShutDownInterceptorFactory.java:64) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.as.ejb3.component.interceptors.LoggingInterceptor.processInvocation(LoggingInterceptor.java:59) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.as.ee.component.NamespaceContextInterceptor.processInvocation(NamespaceContextInterceptor.java:50) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.as.ejb3.component.interceptors.AdditionalSetupInterceptor.processInvocation(AdditionalSetupInterceptor.java:55) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45) at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) at org.jboss.as.ee.component.ViewService$View.invoke(ViewService.java:185) at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.invokeMethod(MethodInvocationMessageHandler.java:332) at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler.access$100(MethodInvocationMessageHandler.java:69) at org.jboss.as.ejb3.remote.protocol.versionone.MethodInvocationMessageHandler$1.run(MethodInvocationMessageHandler.java:202) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745) at org.jboss.threads.JBossThread.run(JBossThread.java:122) at ...asynchronous invocation...(Unknown Source) at org.jboss.ejb.client.remoting.InvocationExceptionResponseHandler$MethodInvocationExceptionResultProducer.getResult(InvocationExceptionResponseHandler.java:99) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:276) at ru.lanit.hcs.integration.security.client.LogInterceptor.handleInvocationResult(LogInterceptor.java:74) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290) at ru.lanit.hcs.integration.common.interceptor.OperationMappingInterceptor.handleInvocationResult(OperationMappingInterceptor.java:58) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290) at ru.lanit.hcs.integration.security.client.EjbSecurityClientInterceptor.handleInvocationResult(EjbSecurityClientInterceptor.java:57) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290) at ru.lanit.hcs.metrics.propagation.EjbMetricsClientInterceptor.handleInvocationResult(EjbMetricsClientInterceptor.java:67) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290) at org.jboss.ejb.client.EJBObjectInterceptor.handleInvocationResult(EJBObjectInterceptor.java:64) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290) at org.jboss.ejb.client.EJBHomeInterceptor.handleInvocationResult(EJBHomeInterceptor.java:88) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290) at org.jboss.ejb.client.TransactionInterceptor.handleInvocationResult(TransactionInterceptor.java:46) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:290) at org.jboss.ejb.client.ReceiverInterceptor.handleInvocationResult(ReceiverInterceptor.java:129) at org.jboss.ejb.client.EJBClientInvocationContext.getResult(EJBClientInvocationContext.java:265) at org.jboss.ejb.client.EJBClientInvocationContext.awaitResponse(EJBClientInvocationContext.java:453) at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:204) at org.jboss.ejb.client.EJBInvocationHandler.doInvoke(EJBInvocationHandler.java:183) at org.jboss.ejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:146) at com.sun.proxy.$Proxy2196.verifyEnveloped(Unknown Source) at sun.reflect.GeneratedMethodAccessor1738.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.remoting.rmi.RmiClientInterceptorUtils.invokeRemoteMethod(RmiClientInterceptorUtils.java:71) at org.springframework.ejb.access.SimpleRemoteSlsbInvokerInterceptor.doInvoke(SimpleRemoteSlsbInvokerInterceptor.java:98) at org.springframework.ejb.access.AbstractRemoteSlsbInvokerInterceptor.invokeInContext(AbstractRemoteSlsbInvokerInterceptor.java:140) at org.springframework.ejb.access.AbstractSlsbInvokerInterceptor.invoke(AbstractSlsbInvokerInterceptor.java:189) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213) at com.sun.proxy.$Proxy2197.verifyEnveloped(Unknown Source) at ru.lanit.hcs.integration.common.spring.service.impl.ValidationServiceImpl.validateSignatureItself(ValidationServiceImpl.java:138) ... 13 more[/spoil:145zwlh8]
Из текста stacktrace'а по первой строчке делаю вывод, что ГИС ЖКХ не может найти сертификат, которым подписан запрос. Но ИС с данным сертификатом создана была давно, не менялась и активна.
 
Ага, уже яснее. Как бы да, не может найти, но вопрос "где ищет?" Кажется, до поиска в базе ГИС дело не доходит, дальше в середине ошибка повторяется в "...verifyEnveloped", который, насколько могу предположить по названию, проверяет структуру самой подписи XMLDSIG. Давненько не смотрел структуру: xades:SigningCertificate это я насколько помню, тег в котором пишется хэш и что-то еще из сертификата и он ссылается на данные сертификата внутри ds:KeyInfo?

Если да, то самописная программа каждый раз хэш вычисляет по сертификату и свойства сертификата читает или читает из какого-то другого файла-кэша? Есть вероятность, что испортились данные в таком кэше со свойствами сертификата (либо сам сертификат, но это маловероятно) и теперь сертификат в ds:KeyInfo не соответствует хэшу в xades:SigningCertificate.
Что-то мне кажется ошибка где-то тут, посмотрите не изменялся ли кэш. Если сохранились запросы которые уходили нормально еще можно с ними сверить содержание ds:KeyInfo и xades:SigningCertificate какие были и какие сейчас.

Отправлено спустя 7 минуты 18 секунды:
Цитата
ЧЕРЕМУШКИ пишет:
у меня то же самое на арбитр.ру
Давненько там не был, но там подпись была вообще другого типа - cades, а не xades. Так что проблема явно другая. И начать нужно с "обновление чего было 06.06.2017?" :D

Подпишись на рассылку новостей ЖКХ, а также наших статей!

Спасибо, вы успешно подписались на рассылку!