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

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline legioner052019  
#11 Оставлено : 20 мая 2019 г. 10:05:00(UTC)
legioner052019

Статус: Активный участник

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

Добрый день

при старте видно что SSLContextImpl инициализируется

мая 20, 2019 9:57:13 AM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: trigger seeding of SecureRandom

2019-05-20 09:57:13.296 INFO 10248 --- [ main] ru.CryptoPro.ssl.SSLLogger : trigger seeding of SecureRandom
мая 20, 2019 9:57:13 AM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: done seeding SecureRandom
2019-05-20 09:57:13.297 INFO 10248 --- [ main] ru.CryptoPro.ssl.SSLLogger : done seeding SecureRandom
2019-05-20 09:57:13.297 INFO 10248 --- [ main] ru.CryptoPro.ssl.SSLLogger : SSLContextImpl initialized.
мая 20, 2019 9:57:13 AM ru.CryptoPro.ssl.SSLContextImpl engineInit
INFO: SSLContextImpl initialized.
мая 20, 2019 9:57:13 AM ru.CryptoPro.ssl.cl_96 <init>
FINE: %% Initialized: [Session-1, SSL_NULL_WITH_NULL_NULL]

2019-05-20 09:57:13.331 INFO 10248 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2019-05-20 09:57:13.331 INFO 10248 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.17]
2019-05-20 09:57:13.500 INFO 10248 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2019-05-20 09:57:13.501 INFO 10248 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3239 ms
мая 20, 2019 9:57:13 AM ru.CryptoPro.ssl.cl_97 close
FINE: Finalizer called close()
мая 20, 2019 9:57:13 AM ru.CryptoPro.ssl.cl_97 d
FINE: Finalizer, called closeInternal(true)
мая 20, 2019 9:57:13 AM ru.CryptoPro.ssl.cl_97 c
FINE: Finalizer , called closeSocket(selfInitiated)

2019-05-20 09:57:14.053 INFO 10248 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2019-05-20 09:57:14.282 INFO 10248 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8000 (http) 8002 (https) with context path ''
2019-05-20 09:57:14.285 INFO 10248 --- [ main] ru.ksbsoft.server.ApplicationKt : Started ApplicationKt in 4.568 seconds (JVM running for 5.136)

при обращении показывает ошибку SSLContextImpl is not initialized

2019-05-20 10:03:12.078 ERROR 10248 --- [nio-8002-exec-1] org.apache.tomcat.util.net.NioEndpoint : Error running socket processor

java.lang.IllegalStateException: SSLContextImpl is not initialized
at ru.CryptoPro.ssl.SSLContextImpl.engineCreateSSLEngine(Unknown Source) ~[cpSSL.jar:40035]
at javax.net.ssl.SSLContext.createSSLEngine(SSLContext.java:329) ~[na:1.8.0_211]
at ru.CryptoPro.ssl.tomcat.jsse.JCPSSLContext.createSSLEngine(JCPSSLContext.java:35) ~[JCPTomcatAdapter-1.0-SNAPSHOT.jar:na]
at org.apache.tomcat.util.net.AbstractJsseEndpoint.createSSLEngine(AbstractJsseEndpoint.java:119) ~[tomcat-embed-core-9.0.17.jar:9.0.17]
at org.apache.tomcat.util.net.SecureNioChannel.processSNI(SecureNioChannel.java:329) ~[tomcat-embed-core-9.0.17.jar:9.0.17]
at org.apache.tomcat.util.net.SecureNioChannel.handshake(SecureNioChannel.java:175) ~[tomcat-embed-core-9.0.17.jar:9.0.17]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1392) ~[tomcat-embed-core-9.0.17.jar:9.0.17]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-9.0.17.jar:9.0.17]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_211]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_211]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-9.0.17.jar:9.0.17]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_211]

подскажите в какую сторону копать?
Offline Евгений Афанасьев  
#12 Оставлено : 20 мая 2019 г. 10:18:55(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Нужно
1) включить логирование для SSLLogger с уровнем ALL (описано в портале техподдержки, раздел JCP). Может, выведется что-то еще.
2) В отладке посмотреть в JCPTomcatAdapter (он все-таки больше предназначался для коннектора), какие параметры используются для создания контекста.
P.S. Несколько инициализаций, скорее всего, как обычно - та, что создается вами + какая-то по умолчанию (SSLContext.getDefault() где-то в коде tomcat).

Отредактировано пользователем 20 мая 2019 г. 10:20:13(UTC)  | Причина: Не указана

Offline legioner052019  
#13 Оставлено : 20 мая 2019 г. 11:32:36(UTC)
legioner052019

Статус: Активный участник

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

Во время создания контекста ssl у tomcat createSSLContext

видим что при получении sslUtil в нашем случае это JCPJSSEUtil
создается контекст JCPJSSEUtil.class:82
Код:
context = new JCPSSLContext("GostTLS");
context.init((KeyManager[])null, (TrustManager[])null, (SecureRandom)null);


у которого contextSpi правильно инициализирован, так как при инициализации в SSLContextImpl для переменной d выставляется true
Код:
SSLLogger.trace("SSLContextImpl initialized.");
this.d = true;

что и наблюдаем после инициализации контекста d=true

дальше вызывается sslUtil.createSSLContext в нашем случае JCPJSSEUtil.createSSLContext в котором уже this.d = false
то есть после вызова createSSLContext контекст не проинициализирован.

почему в static создается и инициализируется JCPSSLContext
а в createSSLContext только создается, не инициализируется

Отредактировано пользователем 20 мая 2019 г. 11:37:09(UTC)  | Причина: Не указана

Offline Евгений Афанасьев  
#14 Оставлено : 20 мая 2019 г. 11:35:54(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
context.init((KeyManager[])null, (TrustManager[])null, (SecureRandom)null); - действительно такая строка? Нет ни одного менеджера? Они должны быть, как минимум, TrustManager.
Offline legioner052019  
#15 Оставлено : 20 мая 2019 г. 11:39:38(UTC)
legioner052019

Статус: Активный участник

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

Автор: Евгений Афанасьев Перейти к цитате
context.init((KeyManager[])null, (TrustManager[])null, (SecureRandom)null); - действительно такая строка? Нет ни одного менеджера? Они должны быть, как минимум, TrustManager.


это в коде так. в файле JCPJSSEUtil.java в блоке static
Offline Евгений Афанасьев  
#16 Оставлено : 20 мая 2019 г. 11:50:22(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
Если не ошибаюсь, в static блоке происходит сбор информации. Нужно посмотреть остальные классы вроде JCPSSLUtilBase, где есть какие-то проверки, и JCPSSLContext, где создается контекст.
Offline legioner052019  
#17 Оставлено : 20 мая 2019 г. 11:58:05(UTC)
legioner052019

Статус: Активный участник

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

Автор: Евгений Афанасьев Перейти к цитате
Если не ошибаюсь, в static блоке происходит сбор информации. Нужно посмотреть остальные классы вроде JCPSSLUtilBase, где есть какие-то проверки, и JCPSSLContext, где создается контекст.


да в JCPJSSEUtil в блоке статик создается JCPSSLContext и явно для него вызывается init вот кусок кода
Код:

JCPSSLContext context;
try {
    context = new JCPSSLContext("GostTLS");
    context.init((KeyManager[])null, (TrustManager[])null, (SecureRandom)null);
} catch (NoSuchAlgorithmException var19) {
    throw new IllegalArgumentException(var19);
} catch (KeyManagementException var20) {
    throw new IllegalArgumentException(var20);
}


но там же JCPJSSEUtil при вызове createSSLContext создается новый контекст без явного вызова init. вот кусок
Код:

public SSLContext createSSLContext(List<String> negotiableProtocols) throws Exception {
        return new JCPSSLContext(this.sslHostConfig.getSslProtocol());
}


Offline Евгений Афанасьев  
#18 Оставлено : 20 мая 2019 г. 11:59:24(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
У него есть init в JCPSSLContext, который, вероятно, позовется позднее.
Offline legioner052019  
#19 Оставлено : 20 мая 2019 г. 12:07:21(UTC)
legioner052019

Статус: Активный участник

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

Автор: Евгений Афанасьев Перейти к цитате
У него есть init в JCPSSLContext, который, вероятно, позовется позднее.


нет. не вызывается. только в блоке ststic
Offline Евгений Афанасьев  
#20 Оставлено : 20 мая 2019 г. 12:13:46(UTC)
Евгений Афанасьев

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

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

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 685 раз в 646 постах
А new JCPSSLContext из вышеуказанного метода вызывается? После него ошибок нет, просто init не зовется даже после попыток подключений?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.