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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Mike Matos  
#1 Оставлено : 16 ноября 2023 г. 16:19:22(UTC)
Mike Matos

Статус: Новичок

Группы: Участники
Зарегистрирован: 15.11.2023(UTC)
Сообщений: 2
Российская Федерация

Есть 2 сервера на одинаковых версиях Linux Astra
На них установлены одинаковые версии КриптоПро JCP

Astra Linux 1.7 Voronezh Template
#################################
mid1:~$ java ru.CryptoPro.JCP.tools.Check -all
ноя 15, 2023 5:01:21 PM ru.CryptoPro.JCP.tools.Starter <init>
INFO: Loading JCP 2.0.41789
ноя 15, 2023 5:01:21 PM ru.CryptoPro.JCP.tools.Starter <init>
INFO: JCP has been loaded.
ноя 15, 2023 5:01:22 PM ru.CryptoPro.Crypto.Starter <init>
INFO: Loading Crypto 2.0.41789 [crypto module]
ноя 15, 2023 5:01:22 PM ru.CryptoPro.Crypto.Starter <init>
INFO: Crypto has been loaded.
ноя 15, 2023 5:01:22 PM ru.CryptoPro.JCP.tools.Check all
INFO:
Linux; unknown; 5.10.0-1057-generic
10 proc.; amd64

OpenJDK Runtime Environment; 1.8.0_352-b08
1.8.0_352; BellSoft; https://bell-sw.com/
Java Virtual Machine Specification; 1.8; Oracle Corporation
OpenJDK 64-Bit Server VM; 25.352-b08; mixed mode; BellSoft
Java Platform API Specification; 1.8; Oracle Corporation
Java class format version number: 52.0
JIT: null

На протяжении полугода периодически возникает ситуация когда какой либо документ на одном из серверов перестаёт проходить проверку подписи в лог выбрасывается ошибка "Алгоритм ключа не соответствует алгоритму подписи.; error codes: [8]". При этом набор корневых и дочерних сертификатов одинаков на обоих серверах, но на одном сервере документ проходит проверку подписи на другом нет. Было много случаев каждый раз проверял сертификаты с ними проблем не было. На каком из серверов не проходит проверку всегда рандом, может быть что на обоих серверах есть подписи документов которые не проходят проверку, но на другом сервере они успешно проходят. Проблема обычно решается простым перезапуском Java-Приложения в которое интегрирован вызов проверки подписей через JCP. Обычный перезапуск и всё в порядке, проверка подписи начинает корректно везде отрабатывать.
Что можно с этим сделать как решить проблему? Может быть параметры какие то можно поправить? На данный момент нет понимания что приводит к такой проблеме. Пожалуйста помогите разобраться. Было подозрение что CRL (списки отозванных сертификатов) могли быть не доступны, но через утилиту wget по адресам из сертификатов успешно все загружаются на обоих серверах

Вызываю проверку подписи следующим образом
Код:

public static void verifyCAdESSignature(InputStream cadesCms, InputStream data, Collection<Certificate> certificates) throws Exception {

        CAdESSignature cadesSignature = new CAdESSignature(cadesCms, data, null);
        cadesSignature.verify(certificates);
        ...
}


certificates = null
В cadesCms, data передаются одни и те же данные на обоих серверах, а результат получаю разный

Сравнил логи КриптоПро по одному и тому же документу на разных серверах. По логу видно что в определённый момент логи начинают расходится справа лог с сервера где проверку подпись не проходит слева с сервера где проходит
Лог
Snimok ehkrana 2023-11-16 174345.png (749kb) загружен 259 раз(а).


В лог приложения из которого вызываю cadesSignature.verify(certificates) выбрасывается следующий лог
Код:

        can't create content verifier: Алгоритм ключа не соответствует алгоритму подписи.; error codes: [8] 'Signature is invalid', 
	at ru.CryptoPro.CAdES.CAdESSignerRawImpl.verifyCryptographicSignature(Unknown Source)
	at ru.CryptoPro.CAdES.CAdESSignerPKCS7Impl.verify(Unknown Source)
	at ru.CryptoPro.CAdES.CAdESSignerBESImpl.verify(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.verify(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.verify(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.verify(Unknown Source)
	at com.haulmont.thesis.cryptopro.global.CryptoProHelper.verifyCAdESSignature(CryptoProHelper.java:57)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedWorkerBean.superValidateSignatureAndGetError(SignatureDetailedWorkerBean.java:365)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedWorkerBean.validateSignatureAndSetError(SignatureDetailedWorkerBean.java:346)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedWorkerBean.getDetailedSignatureInfo(SignatureDetailedWorkerBean.java:258)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedWorkerBean.getAttachmentSignatureEntities(SignatureDetailedWorkerBean.java:239)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedWorkerBean.getSignatureEntities(SignatureDetailedWorkerBean.java:110)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedWorkerBean.getSignatureEntities(SignatureDetailedWorkerBean.java:102)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedServiceBean.getSignatureEntities(SignatureDetailedServiceBean.java:27)
	at sun.reflect.GeneratedMethodAccessor16041.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
	at com.haulmont.thesis.core.sys.ThesisServiceInterceptor.aroundInvoke(ThesisServiceInterceptor.java:31)
	at sun.reflect.GeneratedMethodAccessor417.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
	at com.haulmont.cuba.core.sys.ServiceInterceptor.aroundInvoke(ServiceInterceptor.java:66)
	at sun.reflect.GeneratedMethodAccessor416.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
	at com.sun.proxy.$Proxy459.getSignatureEntities(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor16041.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
	at com.sun.proxy.$Proxy718.getSignatureEntities(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:205)
	at com.haulmont.cuba.core.sys.remoting.CubaRemoteInvocationExecutor.invoke(CubaRemoteInvocationExecutor.java:80)
	at com.haulmont.ynao.core.sys.remoting.YnaoRemoteInvocationExecutor.doInvoke(YnaoRemoteInvocationExecutor.java:33)
	at com.haulmont.ynao.core.sys.remoting.YnaoRemoteInvocationExecutor.invoke(YnaoRemoteInvocationExecutor.java:24)
	at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
	at org.springframework.remoting.support.RemoteInvocationBasedExporter.invokeAndCreateResult(RemoteInvocationBasedExporter.java:114)
	at com.haulmont.cuba.core.sys.remoting.HttpServiceExporter.handleRequest(HttpServiceExporter.java:64)
	at com.haulmont.ynao.core.sys.remoting.YnaoHttpServiceExporter.handleRequest(YnaoHttpServiceExporter.java:48)
	at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:919)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
	at com.haulmont.cuba.core.sys.remoting.RemotingServlet.doService(RemotingServlet.java:132)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
	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:52)
	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:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1634)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:750)
Caused by: org.bouncycastle.cms.CMSException: can't create content verifier: Алгоритм ключа не соответствует алгоритму подписи.
	at org.bouncycastle.cms.SignerInformation.doVerify(Unknown Source)
	at org.bouncycastle.cms.SignerInformation.verify(Unknown Source)
	... 91 more
Caused by: org.bouncycastle.operator.OperatorCreationException: Алгоритм ключа не соответствует алгоритму подписи.
	at ru.CryptoPro.CAdES.tools.verifier.SignatureOutputStream.<init>(Unknown Source)
	at ru.CryptoPro.CAdES.tools.verifier.GostContentVerifierProvider.get(Unknown Source)
	at org.bouncycastle.cms.SignerInformationVerifier.getContentVerifier(Unknown Source)
	... 93 more
Caused by: java.security.InvalidKeyException: Алгоритм ключа не соответствует алгоритму подписи.
	at ru.CryptoPro.JCP.Sign.cl_0.engineInitVerify(Unknown Source)
	at java.security.Signature.initVerify(Signature.java:567)
	... 96 more
org.bouncycastle.cms.CMSException: can't create content verifier: Алгоритм ключа не соответствует алгоритму подписи.
	at org.bouncycastle.cms.SignerInformation.doVerify(Unknown Source)
	at org.bouncycastle.cms.SignerInformation.verify(Unknown Source)
	at ru.CryptoPro.CAdES.CAdESSignerRawImpl.verifyCryptographicSignature(Unknown Source)
	at ru.CryptoPro.CAdES.CAdESSignerPKCS7Impl.verify(Unknown Source)
	at ru.CryptoPro.CAdES.CAdESSignerBESImpl.verify(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.verify(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.verify(Unknown Source)
	at ru.CryptoPro.CAdES.cl_1.verify(Unknown Source)
	at com.haulmont.thesis.cryptopro.global.CryptoProHelper.verifyCAdESSignature(CryptoProHelper.java:57)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedWorkerBean.superValidateSignatureAndGetError(SignatureDetailedWorkerBean.java:365)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedWorkerBean.validateSignatureAndSetError(SignatureDetailedWorkerBean.java:346)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedWorkerBean.getDetailedSignatureInfo(SignatureDetailedWorkerBean.java:258)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedWorkerBean.getAttachmentSignatureEntities(SignatureDetailedWorkerBean.java:239)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedWorkerBean.getSignatureEntities(SignatureDetailedWorkerBean.java:110)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedWorkerBean.getSignatureEntities(SignatureDetailedWorkerBean.java:102)
	at com.haulmont.ynao.core.app.signature.SignatureDetailedServiceBean.getSignatureEntities(SignatureDetailedServiceBean.java:27)
	at sun.reflect.GeneratedMethodAccessor16041.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
	at com.haulmont.thesis.core.sys.ThesisServiceInterceptor.aroundInvoke(ThesisServiceInterceptor.java:31)
	at sun.reflect.GeneratedMethodAccessor417.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
	at com.haulmont.cuba.core.sys.ServiceInterceptor.aroundInvoke(ServiceInterceptor.java:66)
	at sun.reflect.GeneratedMethodAccessor416.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)
	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)
	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
	at com.sun.proxy.$Proxy459.getSignatureEntities(Unknown Source)
	at sun.reflect.GeneratedMethodAccessor16041.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:317)
	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:198)
	at com.sun.proxy.$Proxy718.getSignatureEntities(Unknown Source)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:205)
	at com.haulmont.cuba.core.sys.remoting.CubaRemoteInvocationExecutor.invoke(CubaRemoteInvocationExecutor.java:80)
	at com.haulmont.ynao.core.sys.remoting.YnaoRemoteInvocationExecutor.doInvoke(YnaoRemoteInvocationExecutor.java:33)
	at com.haulmont.ynao.core.sys.remoting.YnaoRemoteInvocationExecutor.invoke(YnaoRemoteInvocationExecutor.java:24)
	at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
	at org.springframework.remoting.support.RemoteInvocationBasedExporter.invokeAndCreateResult(RemoteInvocationBasedExporter.java:114)
	at com.haulmont.cuba.core.sys.remoting.HttpServiceExporter.handleRequest(HttpServiceExporter.java:64)
	at com.haulmont.ynao.core.sys.remoting.YnaoHttpServiceExporter.handleRequest(YnaoHttpServiceExporter.java:48)
	at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:919)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:851)
	at com.haulmont.cuba.core.sys.remoting.RemotingServlet.doService(RemotingServlet.java:132)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
	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:52)
	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:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1634)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Thread.java:750)
Caused by: org.bouncycastle.operator.OperatorCreationException: Алгоритм ключа не соответствует алгоритму подписи.
	at ru.CryptoPro.CAdES.tools.verifier.SignatureOutputStream.<init>(Unknown Source)
	at ru.CryptoPro.CAdES.tools.verifier.GostContentVerifierProvider.get(Unknown Source)
	at org.bouncycastle.cms.SignerInformationVerifier.getContentVerifier(Unknown Source)
	... 93 more
Caused by: java.security.InvalidKeyException: Алгоритм ключа не соответствует алгоритму подписи.
	at ru.CryptoPro.JCP.Sign.cl_0.engineInitVerify(Unknown Source)
	at java.security.Signature.initVerify(Signature.java:567)
	... 96 more

Отредактировано пользователем 16 ноября 2023 г. 16:52:26(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#2 Оставлено : 16 ноября 2023 г. 18:59:50(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 704 раз в 665 постах
Здравствуйте.
Скорее всего, у вас случается ротация криптопровайдеров: bouncycastle (BC) и JCP. CAdES для декодирования использует BC, а криптографию - из JCP. BC также содержит реализацию для декодирования открытого ключа сертификата и, скорее всего, в какой-то момент оказывается по приоритету выше JCP. Проверьте, нет ли у вас в коде операций вида Security.addProvider, Security.removeProvider, а также в java.security в списке provider.XX на проблемной машине проверьте очередность провайдеров.

Отредактировано пользователем 16 ноября 2023 г. 19:00:29(UTC)  | Причина: Не указана

thanks 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
nickm оставлено 11.11.2024(UTC)
Offline Mike Matos  
#3 Оставлено : 11 ноября 2024 г. 10:19:20(UTC)
Mike Matos

Статус: Новичок

Группы: Участники
Зарегистрирован: 15.11.2023(UTC)
Сообщений: 2
Российская Федерация

Как выяснилось в проекте использовалась сторонняя библиотека, которая при определённых условиях инициализировала криптопровайдер bouncycastle (BC) вторым в список java.security.provider что и приводило к проблемам. Но почему вообще порядок криптопровайдеров влияет на результат проверки подписи? Разве это не баг?
Offline Санчир Момолдаев  
#4 Оставлено : 11 ноября 2024 г. 20:03:39(UTC)
Санчир Момолдаев

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

Группы: Модератор, Участники
Зарегистрирован: 03.12.2018(UTC)
Сообщений: 1,190
Российская Федерация

Сказал(а) «Спасибо»: 100 раз
Поблагодарили: 272 раз в 253 постах
нет, это не баг.
это архитектура JCA

берется алгоритм, затем через итерацию провайдеров, спрашивают у каждого знает ли он такой, если знает, он его и обрабатывает.
т.е. кто выше в списке тот и займется обработкой ключа / алгоритма
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.