Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро JCP, JavaTLS
»
КриптоПро JCSP KeyStore.getCertificate зависает на пару минут при получении просроченного серта
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2019(UTC) Сообщений: 35   Откуда: Санкт-Петербург Сказал «Спасибо»: 14 раз
|
Добрый день! Есть код инициализирующий SSLContext для общения с КриптоПро УЦ 2.0, в частности инициализация ключа обмена: Код: //
// Загрузить приватный ключ обмена
//
final String certificateAlias = properties.getAuthorization().getCertificate().getName();
final InputStream container = new StoreInputStream(certificateAlias);
final KeyStore ks = KeyStore.getInstance(JCSP.HD_STORE_NAME, JCSP.PROVIDER_NAME);
this.logger.debug("createSender: load the {} key container", certificateAlias);
ks.load(container, null);
//
// Получить сертификат ключа
//
this.logger.debug("createSender: load the {} certificate", certificateAlias);
final Certificate certificate = ks.getCertificate(certificateAlias);
if( certificate == null ) {
throw new IllegalStateException("Configuration error: Cannot find the %s certificate".formatted(certificateAlias));
}
final X509Certificate x509 = (X509Certificate) certificate;
this.logger.debug("createSender: gather certificate revocation list for certificate: {}", x509);
Есть два КриптоПро УЦ: тестовый и продовый. Если два контейнера ключей тестового и продового операторов КриптоПро УЦ. Так вот, при получении сертификата, связанного с закрытым ключом (ks.getCertificate(certificateAlias)) я наблюдаю разное поведение при получении сертификата тестового контейнера и продового: При получение сертификата из контейнера ключа тестового оператора: Код:--2025-12-01T09:50:39.957Z -DEBUG 1 --- [crypto-agent] [ main] -r.r.c.c.c.ca2.RegAuthLegacyService : [] [] [] createSender: load the 2025-01-22-test-ca-operator key container
--2025-12-01T09:50:39.957Z -DEBUG 1 --- [crypto-agent] [ main] -r.r.c.c.c.ca2.RegAuthLegacyService : [] [] [] createSender: load the 2025-01-22-test-ca-operator certificate
--2025-12-01T09:50:40.356Z -DEBUG 1 --- [crypto-agent] [ main] -r.r.c.c.c.ca2.RegAuthLegacyService : [] [] [] createSender: gather certificate revocation list for certificate: [
вызов getCertificate идет около 1 секунды. При получении же сертификата из контейнера ключа продового оператора я наблюдаю зарежку около 2 минут: Код:--2025-12-01T09:50:41.072Z -DEBUG 1 --- [crypto-agent] [ main] -r.r.c.c.c.ca2.RegAuthLegacyService : [] [] [] createSender: load the rolis-ca-operator-2025-10-10 key container
--2025-12-01T09:50:41.072Z -DEBUG 1 --- [crypto-agent] [ main] -r.r.c.c.c.ca2.RegAuthLegacyService : [] [] [] createSender: load the rolis-ca-operator-2025-10-10 certificate
--2025-12-01T09:52:31.780Z -DEBUG 1 --- [crypto-agent] [ main] -r.r.c.c.c.ca2.RegAuthLegacyService : [] [] [] createSender: gather certificate revocation list for certificate: [
Включено логирование КриптоПро, но ничего в логе нет в этот момент. Количество HDIMAGE контейнеров порядка 300. Установлены следующие параметры при старте сервиса: Код: -Dsun.misc.URLClassPath.disableJarChecking=true \
-Dcom.sun.security.enableCRLDP=false \
-Dcom.ibm.security.enableCRLDP=false \
-Dru.CryptoPro.reprov.enableAIAcaIssuers=false
Что происходит в эти 2 минуты задержки при получении сертификата связанного именно с контейнером продового оператора? UPDATED: выяснилось одно обстоятельство: сертификат продового ключа rolis-ca-operator-2025-10-10 уже просрочен. При вызове getCertificate это может влиять на такую задержку? Спасибо! Отредактировано пользователем 1 декабря 2025 г. 13:55:07(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,238  Сказал(а) «Спасибо»: 106 раз Поблагодарили: 300 раз в 278 постах
|
Добрый день!
тестовый и продовый контейнер расположены на одном и том же сервере под одним и тем же пользователем? или это все же разные сервера? |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2019(UTC) Сообщений: 35   Откуда: Санкт-Петербург Сказал «Спасибо»: 14 раз
|
Автор: Санчир Момолдаев  Добрый день!
тестовый и продовый контейнер расположены на одном и том же сервере под одним и тем же пользователем? или это все же разные сервера? Это все один сервер, одна конфигурация, купюры лога одного и того же запуска. Почему обратили внимание? Сервис стал стартовать с задержкой. Начали выяснять и локализовали вызов KeyStore.getCertificate, который выполняется с большой задержкой на просроченном сертификате. Еще раз обращу внимание, что HDIMAGE контейнеров около 300. На малом количестве контейнеров задержка нивелируется. Отредактировано пользователем 2 декабря 2025 г. 10:25:32(UTC)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,072  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 741 раз в 698 постах
|
Добрый день.
Не сталкивался с таким. Кроме срока и издателя, сертификаты чем-то отличаются?
Можете подключиться к процессу приложения чем-то вроде visualvm и посмотреть, на чем зависает, сделать дамп? |
|
|
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро JCP, JavaTLS
»
КриптоПро JCSP KeyStore.getCertificate зависает на пару минут при получении просроченного серта
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close