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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline r-u-s-s-k-i-y  
#1 Оставлено : 22 февраля 2018 г. 16:11:18(UTC)
r-u-s-s-k-i-y

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

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

При попытке подписать сообщение на сервере вываливается ексепшн

Код:

java.lang.NullPointerException
        at ru.CryptoPro.CAdES.tools.verifier.GostContentSignerProvider.getAlgorithmIdentifier(Unknown Source)
        at ru.CryptoPro.CAdES.tools.verifier.GostContentSignerProvider.<init😠Unknown Source)
        at org.askog.security.EsiaLogin.login(EsiaLogin.java:96)
        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.apache.el.parser.AstValue.invoke(AstValue.java:245)
        at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:277)
        at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
        at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:74)
        at org.primefaces.application.DialogActionListener.processAction(DialogActionListener.java:45)
        at javax.faces.component.UICommand.broadcast(UICommand.java:120)
        at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1174)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:365)
        at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1660)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:864)
        at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:42)
        at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:196)
        at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:143)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.askog.utils.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:20)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

Тот же самый код на локальной машине работает нормально. В чем может быть проблема?
Offline Евгений Афанасьев  
#2 Оставлено : 22 февраля 2018 г. 16:29:16(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Сложно сказать. Может, закрытый ключ - null?
Offline r-u-s-s-k-i-y  
#3 Оставлено : 26 февраля 2018 г. 11:11:27(UTC)
r-u-s-s-k-i-y

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

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

Автор: afev Перейти к цитате
Сложно сказать. Может, закрытый ключ - null?
Да, действительно KeyStore возвращается пустым. Пробую на своей машине все работает. При переносе на сервер не видит ни одного закрытого ключа в хранилище, хотя они установлены в CSP.

Код:
Security.addProvider(new BouncyCastleProvider());
            CAdESUtility.initJCPAlgorithms();
            KeyStore keyStore = KeyStore.getInstance("HDImageStore");
            keyStore.load(null, null);

KeyStore в этот момент пустой. В чем может быть проблема?

Offline Евгений Афанасьев  
#4 Оставлено : 26 февраля 2018 г. 11:18:18(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Возможно, контейнеры отсутствуют в папке данного пользователя (C:\Users\<user>\AppData\Local\Crypto Pro или /var/opt/cprocsp/keys/<user>). JCP использует контейнеры из указанных папок, с CSP не связан.

Отредактировано пользователем 26 февраля 2018 г. 11:18:59(UTC)  | Причина: Не указана

Offline r-u-s-s-k-i-y  
#5 Оставлено : 26 февраля 2018 г. 11:43:35(UTC)
r-u-s-s-k-i-y

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

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

Автор: afev Перейти к цитате
Возможно, контейнеры отсутствуют в папке данного пользователя (C:\Users\<user>\AppData\Local\Crypto Pro или /var/opt/cprocsp/keys/<user>). JCP использует контейнеры из указанных папок, с CSP не связан.


То есть если я правильно понял для доступа JCP к ключам и личным сертификатам не обязательно их устанавливать в CSP? И попытка получения сертификата
Код:
X509Certificate cert = (X509Certificate) keyStore.getCertificate(alias);

тоже получит сертификат путем обращения к папке /var/opt/cprocsp/keys/<user>? И нужно ли для получения сертификата делать еще какие то действия, потому что сертификат возвращает null даже после того, как я поместил все закрытые ключи в папку /var/opt/cprocsp/keys/<user>.
Offline Евгений Афанасьев  
#6 Оставлено : 26 февраля 2018 г. 12:02:21(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Автор: r-u-s-s-k-i-y Перейти к цитате

То есть если я правильно понял для доступа JCP к ключам и личным сертификатам не обязательно их устанавливать в CSP?

Да, необязательно.
Автор: r-u-s-s-k-i-y Перейти к цитате

И попытка получения сертификата
Код:
X509Certificate cert = (X509Certificate) keyStore.getCertificate(alias);
тоже получит сертификат путем обращения к папке /var/opt/cprocsp/keys/<user>?

Да, именно так. Сертификат будет извлечен из контейнера.
Автор: r-u-s-s-k-i-y Перейти к цитате

И нужно ли для получения сертификата делать еще какие то действия, потому что сертификат возвращает null даже после того, как я поместил все закрытые ключи в папку /var/opt/cprocsp/keys/<user>.

Если сертификат установлен в контейнер, то его можно получить с помощью getCertificate()/getCertificateChain() (он будет считан из файла header.key в папке контейнера). Если getCertificate() возвращает null, то, возможно, сертификат не был установлен в контейнер.
Offline r-u-s-s-k-i-y  
#7 Оставлено : 28 февраля 2018 г. 10:00:33(UTC)
r-u-s-s-k-i-y

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

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

Автор: afev Перейти к цитате
Автор: r-u-s-s-k-i-y Перейти к цитате

То есть если я правильно понял для доступа JCP к ключам и личным сертификатам не обязательно их устанавливать в CSP?

Да, необязательно.
Автор: r-u-s-s-k-i-y Перейти к цитате

И попытка получения сертификата
Код:
X509Certificate cert = (X509Certificate) keyStore.getCertificate(alias);
тоже получит сертификат путем обращения к папке /var/opt/cprocsp/keys/<user>?

Да, именно так. Сертификат будет извлечен из контейнера.
Автор: r-u-s-s-k-i-y Перейти к цитате

И нужно ли для получения сертификата делать еще какие то действия, потому что сертификат возвращает null даже после того, как я поместил все закрытые ключи в папку /var/opt/cprocsp/keys/<user>.

Если сертификат установлен в контейнер, то его можно получить с помощью getCertificate()/getCertificateChain() (он будет считан из файла header.key в папке контейнера). Если getCertificate() возвращает null, то, возможно, сертификат не был установлен в контейнер.


Спасибо, ключ и сертификат извлекаются, но теперь на сервер стал валиться эксепшн
Код:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.; error codes: [-2] 'Application error',
        at ru.CryptoPro.CAdES.tools.verifier.GostContentSignerProvider.<init>(Unknown Source)
        at org.askog.security.EsiaLogin.login(EsiaLogin.java:100)
        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.apache.el.parser.AstValue.invoke(AstValue.java:245)
        at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:277)
        at org.apache.myfaces.view.facelets.el.ContextAwareTagMethodExpression.invoke(ContextAwareTagMethodExpression.java:96)
        at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:74)
        at org.primefaces.application.DialogActionListener.processAction(DialogActionListener.java:45)
        at javax.faces.component.UICommand.broadcast(UICommand.java:120)
        at javax.faces.component.UIViewRoot._broadcastAll(UIViewRoot.java:1174)
        at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:365)
        at javax.faces.component.UIViewRoot._process(UIViewRoot.java:1660)
        at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:864)
        at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:42)
        at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:196)
        at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:143)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.askog.utils.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:20)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
        at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:537)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:658)
        at org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:222)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1566)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1523)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.bouncycastle.operator.OperatorCreationException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
        at ru.CryptoPro.CAdES.tools.verifier.SignatureOutputStream.<init>(Unknown Source)
... 45 more
Caused by: java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
        at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:204)
        at java.awt.Window.<init>(Window.java:536)
        at java.awt.Frame.<init>(Frame.java:420)
        at java.awt.Frame.<init>(Frame.java:385)
        at javax.swing.JFrame.<init>(JFrame.java:189)
        at ru.CryptoPro.JCP.tools.N.<init>(Unknown Source)
        at ru.CryptoPro.JCP.tools.Gost2001Warning.warn(Unknown Source)
        at ru.CryptoPro.JCP.Sign.c.engineInitSign(Unknown Source)
        at java.security.Signature.initSign(Signature.java:527)
        ... 46 more
Offline Евгений Афанасьев  
#8 Оставлено : 28 февраля 2018 г. 16:00:31(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Нужно отключить уведомление об истечении сроков использования ГОСТ 2001, см. https://support.cryptopr...tm_campaign=warn_2017-10
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.