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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Хабиров Александр  
#1 Оставлено : 9 марта 2021 г. 7:30:34(UTC)
Хабиров Александр

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

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

Сказал(а) «Спасибо»: 1 раз
Пытаюсь подписать данные с использованием JCP и ключа из Rutoken:
Код:

private byte[] signPkcs7Gost(final byte[] content) throws Exception {
        try {
            KeyStore keystore = KeyStore.getInstance("RutokenStore", JCP.PROVIDER_NAME);
            keystore.load(null, ksPassword.toCharArray());
            Certificate[] certificateChain = keystore.getCertificateChain(keyAlias);
            final List<Certificate> certificates = new ArrayList<Certificate>();
            for (int i = 0, length = certificateChain == null ? 0 : certificateChain.length; i < length; i++) {
                certificates.add(certificateChain[i]);
            }
            Store store = new JcaCertStore(certificates);
            X509Certificate signerCert = (X509Certificate) keystore.getCertificate(keyAlias);
            PrivateKey privateKey = (PrivateKey) (keystore.getKey(keyAlias, ksPassword.toCharArray()));

            CMSSignedDataGenerator generator = new CMSSignedDataGenerator();
            ContentSigner contentSigner;

            contentSigner = new GostContentSignerProvider(privateKey, JCP.PROVIDER_NAME);
            SignerInfoGenerator signerInfoGenerator = new JcaSignerInfoGeneratorBuilder(
                    new GostDigestCalculatorProvider(privateKey, JCP.PROVIDER_NAME)).build(contentSigner, signerCert);
            generator.addSignerInfoGenerator(signerInfoGenerator);
            generator.addCertificates(store);
            CMSProcessable contentBA = new CMSProcessableByteArray(content);
            CMSSignedData signedData = generator.generate((CMSTypedData) contentBA, false);
            byte[] pkcs7 = signedData.getEncoded();
            return pkcs7;
        } catch (Exception e) {
            LOG.error("signPkcs7Gost exception", e);
        }
        return null;
    }

Падает на строчке
Код:
Certificate[] certificateChain = keystore.getCertificateChain(keyAlias);

При этом сам keystore не null.
В логе
Код:
ERROR 21-03-09 09:20:47.265 EsiaService signPkcs7Gost exception
java.lang.NullPointerException: null

Через ControlPane смотрел рутокен видно, ключ и сертификат есть, пароль верный, лицензия JCP бессрочная.
Подскажите в чём может быть дело?
Offline Евгений Афанасьев  
#2 Оставлено : 9 марта 2021 г. 8:13:47(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Здравствуйте.
Приведите полный стек ошибки - e.printStackStrace().
Offline Хабиров Александр  
#3 Оставлено : 9 марта 2021 г. 10:11:03(UTC)
Хабиров Александр

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

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

Сказал(а) «Спасибо»: 1 раз
[2021-03-09T12:03:01.907+0500] [glassfish 4.1] [SEVERE] [] [] [tid: _ThreadID=36 _ThreadName=Thread-9] [timeMillis: 1615273381907] [levelValue: 1000] [[
java.lang.NullPointerException]]

Полный стектрейс почему то не показывается. Если вручную выкинуть Exception то весь стектрейс показывается нормально.
Offline Евгений Афанасьев  
#4 Оставлено : 9 марта 2021 г. 14:48:51(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Добавьте в код e.printStackTrace().
Offline Хабиров Александр  
#5 Оставлено : 10 марта 2021 г. 6:27:06(UTC)
Хабиров Александр

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

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

Сказал(а) «Спасибо»: 1 раз
Код:
java.lang.NullPointerException: null
	at ru.CryptoPro.JCP.KeyStore.cl_11.run(Unknown Source) ~[JCP.jar:40502]
	at java.security.AccessController.doPrivileged(Native Method) ~[na:1.8.0_212]
	at ru.CryptoPro.JCP.KeyStore.cl_10.<init>(Unknown Source) ~[JCP.jar:40502]
	at ru.CryptoPro.JCP.KeyStore.ContainerStore.b(Unknown Source) ~[JCP.jar:40502]
	at ru.CryptoPro.JCP.KeyStore.ContainerStore.b(Unknown Source) ~[JCP.jar:40502]
	at ru.CryptoPro.JCP.KeyStore.ContainerStore.engineGetCertificateChain(Unknown Source) ~[JCP.jar:40502]
	at ru.CryptoPro.JCP.KeyStore.JCPKeyStore.engineGetCertificateChain(Unknown Source) ~[JCP.jar:40502]
	at java.security.KeyStore.getCertificateChain(KeyStore.java:1048) ~[na:1.8.0_212]
	at ru.chelinvest.gorod.bcsite.service.EsiaService.signPkcs7Gost(EsiaService.java:394) [EsiaService.class:na]
	at ru.chelinvest.gorod.bcsite.service.EsiaService.getUrlSafeSign(EsiaService.java:434) [EsiaService.class:na]
	at ru.chelinvest.gorod.bcsite.service.EsiaService.generateClientSecret(EsiaService.java:386) [EsiaService.class:na]
	at ru.chelinvest.gorod.bcsite.service.EsiaService.sendEsiaLogonRequest(EsiaService.java:167) [EsiaService.class:na]
	at ru.chelinvest.gorod.bcsite.controller.auth.EsiaSendController.esiaAuthorize(EsiaSendController.java:25) [EsiaSendController.class:na]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_212]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_212]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_212]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_212]
	at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) [javax.servlet-api.jar:3.1.0]
	at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) [spring-webmvc-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [javax.servlet-api.jar:3.1.0]
	at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) [web-core.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344) [web-core.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [web-core.jar:na]
	at ru.chelinvest.gorod.bcsite.servlets.ResponseFilter.doFilter(ResponseFilter.java:29) [ResponseFilter.class:na]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) [web-core.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [web-core.jar:na]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:154) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:199) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at ru.chelinvest.gorod.bcsite.oath2.core.XGAuthenticationFilter.doFilter(XGAuthenticationFilter.java:62) [XGAuthenticationFilter.class:na]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:110) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:50) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:144) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) [spring-security-web-3.2.8.RELEASE.jar:3.2.8.RELEASE]
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) [web-core.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [web-core.jar:na]
	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) [spring-web-4.1.7.RELEASE.jar:4.1.7.RELEASE]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256) [web-core.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) [web-core.jar:na]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316) [web-core.jar:na]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) [web-core.jar:na]
	at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) [web-core.jar:na]
	at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) [web-core.jar:na]
	at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) [web-glue.jar:na]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) [web-core.jar:na]
	at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:416) [web-core.jar:na]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:283) [web-core.jar:na]
	at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459) [kernel.jar:na]
	at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167) [kernel.jar:na]
	at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:206) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:180) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:283) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:200) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:132) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:111) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:536) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:591) [nucleus-grizzly-all.jar:na]
	at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:571) [nucleus-grizzly-all.jar:na]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_212]

Offline Евгений Афанасьев  
#6 Оставлено : 10 марта 2021 г. 12:07:24(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
1. В панели управления JCP на вкладке "Хранилища ключей и сертификатов" есть хранилище RutokenStore? Ключевой контейнер там открывается?
2. Попробуйте версию JCP новее, какие-то ошибки могли быть исправлены - https://www.cryptopro.ru...te/jcp/jcp-2.0.41789.zip
Offline Хабиров Александр  
#7 Оставлено : 10 марта 2021 г. 15:09:35(UTC)
Хабиров Александр

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

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

Сказал(а) «Спасибо»: 1 раз
Да, хранилище есть. Контейнер открывается, ключ и сертификат можно посмотреть. На этой версии всё работало до 1го марта, первого марта перестало работать, jcp не обновляли.
Offline Евгений Афанасьев  
#8 Оставлено : 10 марта 2021 г. 15:18:03(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 690 раз в 651 постах
Приложите, пожалуйста, сертификат, посмотрим его.
Offline Хабиров Александр  
#9 Оставлено : 11 марта 2021 г. 8:03:46(UTC)
Хабиров Александр

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

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

Сказал(а) «Спасибо»: 1 раз
cert.zip (2kb) загружен 0 раз(а).
Offline Хабиров Александр  
#10 Оставлено : 11 марта 2021 г. 13:20:33(UTC)
Хабиров Александр

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

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

Сказал(а) «Спасибо»: 1 раз
Перезапустили сервер приложений, ошибка ушла. Спасибо за помощь.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.