Форум КриптоПро
»
Средства криптографической защиты информации
»
Linux, Solaris etc.
»
Очень медленно осуществляется проверка на список отозваннных(CertGetCertificateChain)
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.10.2014(UTC) Сообщений: 9   Откуда: Нижний Новгород
|
Автор: Андрей *  Автор: Dorian_Sam  Возможно что сам список СОСов большой и по нему поиск долго осуществляется? В кэше они есть вроде как, проверял так: Цитата: certmgr -list cache -store CA -crl
Тот, что есть у меня размером 2,2 мб: Идентификатор ключа=fa 31 16 e8 8c 30 38 4e b9 de a7 55 1d 9e 83 49 83 9e 0d 0a Поставщик сертификата: CN=TENSORCA3 в нем действительно много ... 53465 отозванных сертификатов. Если установлены только СОСы тензора то verify отрабатывает за 0,6 сек но если установить весь набор СОСов которые я приложил то время увеличивается в 2-2,5 раза
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 25.05.2012(UTC) Сообщений: 27   Откуда: Нижний Новгород Сказал «Спасибо»: 4 раз
|
Автор: Dorian_Sam  Автор: Андрей *  Автор: Dorian_Sam  Возможно что сам список СОСов большой и по нему поиск долго осуществляется? В кэше они есть вроде как, проверял так: Цитата: certmgr -list cache -store CA -crl
Тот, что есть у меня размером 2,2 мб: Идентификатор ключа=fa 31 16 e8 8c 30 38 4e b9 de a7 55 1d 9e 83 49 83 9e 0d 0a Поставщик сертификата: CN=TENSORCA3 в нем действительно много ... 53465 отозванных сертификатов. Если установлены только СОСы тензора то verify отрабатывает за 0,6 сек но если установить весь набор СОСов которые я приложил то время увеличивается в 2-2,5 раза привет, ну скорее всего вопрос не про "verify", а про функцию Capi\certGetCertificateChain() и еще вопрос, ты её вызов конкретно профайлил или целиком весь кусок при проверке ЦП, там просто еще всякой мути помимо Capi\certGetCertificateChain() полно, т.е. время 0.6 это на вызов всего при списках тензора только или чисто на функцию certGetCertificateChain() у тебя получается (в любом случае 0.6 это много и по SLA не прокатит)? Код:
public function verifyDetachedMessageSignature(...)
{
$message = Capi\cryptMsgOpenToDecode()
Capi\cryptMsgUpdate($message, $signature)
$signerCnt = Capi\cryptMsgGetParam($message, Capi\CMSG_SIGNER_COUNT_PARAM);
$attributes = Capi\cryptMsgGetParam($message, Capi\CMSG_SIGNER_AUTH_ATTR_PARAM);
// + поиск через анономную функцию среди $attributes - Capi\szOID_RSA_signingTime
Capi\cryptDecodeObject(
Capi\X509_ASN_ENCODING | Capi\PKCS_7_ASN_ENCODING, Capi\szOID_RSA_signingTime, $encodedSigningTime
);
for ($signerIdx = 0; $signerIdx < $signerCnt; $signerIdx++) {
$certContext = Capi\verifyDetachedMessageSignature($verifyMessagePara, $signerIdx, $signature, array($message));
// + CERT_CHAIN_CACHE_END_CERT для $chainEngineConfig
Capi\certGetCertificateChain(
$chainEngine, $certContext, time(), null, $chainParam, Capi\CERT_CHAIN_REVOCATION_CHECK_CHAIN
);
// + получение extensions сертификата
// дополнительные вызовы на Capi\cryptDecodeObject() по Capi\szOID_SUBJECT_ALT_NAME2 и Capi\szOID_PRIVATEKEY_USAGE_PERIOD
// + получение enhanced key usage сертификата
// дополнительный вызов на Сapi\certGetEnhancedKeyUsage()
}
}
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 29.10.2014(UTC) Сообщений: 9   Откуда: Нижний Новгород
|
Цитата:Capi\certGetCertificateChain() и еще вопрос, ты её вызов конкретно профайлил или целиком весь кусок при проверке ЦП, там просто еще всякой мути помимо Capi\certGetCertificateChain() полно, т.е. время 0.6 это на вызов всего при списках тензора только или чисто на функцию certGetCertificateChain() у тебя получается (в любом случае 0.6 это много и по SLA не прокатит)?
Привет. Замерял так: Код:
public function verifyCertificateChain(....)
{
.......
$certUsageMatch = $usageMatchCryptoApi->fromArray(array(
'type' => GostCsp\USAGE_MATCH_TYPE_AND,
'usage' => $certEnhKeyUsage,
));
$chainPara = $chainParaCryptoApi->fromArray(array('requestedUsage' => $certUsageMatch));
$start = microtime(true);
$chainContext = $certificateChainCryptoApi->getCertificateChain($chainEngine, $certContext, time(), null, $chainPara, GostCsp\CERT_CHAIN_REVOCATION_CHECK_CHAIN);
echo "certGetCertificateChain:" .(microtime(true) - $start)."\n";
......
}
public function getCertificateChain($chainEngine, CertContextInterface $certContext, $time, $additionalStore, ChainParaInterface $chainPara, $flags)
{
$chainContext = GostCsp\certGetCertificateChain($chainEngine, $certContext, $time, $additionalStore, $chainPara, $flags);
if (!$chainContext) {
throw new Exception\RuntimeException(....);
}
return $chainContext;
}
и результат: Цитата: certGetCertificateChain:1.4679510593414 AFTER RESULT: 1.5929758548737
и получается что 90% времени занимает certGetCertificateChain(...)
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 27.06.2016(UTC) Сообщений: 11  Откуда: Питер
|
Столкнулись с аналогичной проблемой. Есть ли какое-то решение в итоге?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,408  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 723 раз в 626 постах
|
Решение - использовать последние версии CSP 4.0\3.9. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 27.06.2016(UTC) Сообщений: 11  Откуда: Питер
|
Автор: maxdm  Решение - использовать последние версии CSP 4.0\3.9. У нас установлена CSP 3.9 на базе ОС Debian 8.0 Все, что мы сделали — установили все корневые сертификаты УЦ, аккредитованных при минкомсвязи и их CRL-листы. Тормоза по 30-35 секунд на проверку подписи.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 30.06.2016(UTC) Сообщений: 4  Откуда: на работе
|
Добрый день
Прошлой осенью я ускорял 3_9/4_0 в несколько раз. В качестве теста я использовал постоение и проверку цепочки с CRL размером 2Мб. Тогда я использовал Fedora23 / x86_64.
Весьма интересно было бы узнать: 0) решаемую задачу -- зачем Вам устанавливать всё? Если для тестов производительности, то я бы рекомендовал не 3_9, а trunk или 4_0. 1) Версии CSP и № сборки 2) разрядность дистрибутива -- 32/64 3) не могли бы Вы поделиться замкнутым тестовым примером?
Решение: 1) установить последнюю сборку 3_9/4_0 -- в них заведомо будут исправления -- если у Вас версия без исправлений, то несколько раз Вы получите 2) установить 4_0 вместо 3_9 -- разница между ними невелика -- в лучшем случае первые десятки процентов
Я полагаю, что доработки 3_9 займут значительно больше времени, чем доработки 4_0 и, тем более, trunk.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 27.06.2016(UTC) Сообщений: 11  Откуда: Питер
|
Автор: dgd  Добрый день 0) решаемую задачу -- зачем Вам устанавливать всё?
У нас электронная торговая площадка. Мы поддерживаем ЭП всех аккредитованных УЦ. Мы думали над вариантом импортировать только те корневые сертификаты, клиенты которых к нам приходят, но нам представилось, что такое решение заведомо сложнее и пока мы по этому пути решили не идти. Цитата: 1) Версии CSP и № сборки
Код:
/opt/cprocsp/bin/amd64# ./csptest -keyset -verifycontext
CSP (Type:75) v3.9.8001 KC1 Release Ver:3.9.8227 OS:Linux CPU:AMD64 FastCode:READY:SSSE3.
AcquireContext: OK. HCRYPTPROV: 39898803
GetProvParam(PP_NAME): Crypto-Pro GOST R 34.10-2001 KC1 CSP
Total:
[ErrorCode: 0x00000000]
Цитата:2) разрядность дистрибутива -- 32/64 64 Цитата:3) не могли бы Вы поделиться замкнутым тестовым примером? Попрошу коллегу подготовить тест, но на словах выглядит так: 1. берем https://e-trust.gosuslug...nloadTSL?schemaVersion=02. достаем из него все активные корневые сертификаты УЦ, устанавливаем в mRoot 3. берем оттуда же ссылки на соответствующие CRL и добавляем их mCa 4. пытаемся проверить подпись при помощи cpverify Цитата:установить 4_0 вместо 3_9 Мы бы с радостью, но лицензия на 3.9 уже куплена. Лицензия на 4.0 — это дополнительные затраты, которые еще надо обосновать руководству.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 30.06.2016(UTC) Сообщений: 4  Откуда: на работе
|
1) Ваша версия : 2014-12-07 КриптоПро CSP 3.9.8227 2) С тех пор был выпущен ряд обновлений 3) Упомянутые мной улучшения вошли в 2016-02-02 КриптоПро CSP 3.9.8363
Я бы рекомендовал установить последнюю выпущенную версию CSP_3_9. На сегодняшний день это 2016-04-14 КриптоПро CSP 3.9.8423. Я бы ожидал существенного ускорения, но сложно заранее сказать будет это 1.5 раза или 3.
Ваша лицензия для 3.9 подходит для любой сборки 3.9.
Расскажите, пожалуйста, чем дело закончится. И я буду благодарен за замкнутый пример -- пример реального использования очень интересен.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 27.06.2016(UTC) Сообщений: 11  Откуда: Питер
|
Автор: dgd  1) Ваша версия : 2014-12-07 КриптоПро CSP 3.9.8227 Я бы рекомендовал установить последнюю выпущенную версию CSP_3_9. На сегодняшний день это 2016-04-14 КриптоПро CSP 3.9.8423. Я бы ожидал существенного ускорения, но сложно заранее сказать будет это 1.5 раза или 3.
Поставили указанную версию. Проверили. Действительно стало быстрее. Время исполнения проверки сократилось с 33 секунд до 12. Разумеется, прогресс на лицо. Но очевидно, что мы не можем заставлять пользователя ждать и эти 12 секунд. Мы решили, что будем отключать проверку списков отзыва в реальном режиме времени и сделаем проверку сертификатов в фоновом режиме, чтобы пользователь эту работу не видел. Замкнутый пример постараемся подготовить.
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
Linux, Solaris etc.
»
Очень медленно осуществляется проверка на список отозваннных(CertGetCertificateChain)
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close