Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 4.0
»
Как запретить КриптоПРО CSP обращаться к интернету при проверке сертификата на отзыв?
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2014(UTC) Сообщений: 104  Откуда: Москва Сказал(а) «Спасибо»: 24 раз
|
Здравствуйте. Есть Linux-сервер на котором развернут КриптоПРО CSP. Сервер полностью отключен от интернета - слать запросы к OCSP-серверам или получать свежие СОС нельзя. Свежие СОС устанавливаются неким внешним процессом (вплоть до "товарища с флешкой", который ставит СОС-ы вручную) - для проверяемых сертификатов они будут в хранилище сертификатов. Как запретить КриптоПРО CSP обращаться к интернету при построении цепочки доверия для сертификата и проверке отозван сертификат или нет? Еще раз - свежие СОС присутствуют в хранилище сертификатов. Сейчас, даже при наличии свежих СОС требуется доступ к интернету - иначе выдается ошибка при проверке сертификата "The revocation status of the certificate or one of the certificates in the certificate chain is unknown" (trustStatus = 0x40). Пример сертификата - (  c.cer.zip (2kb) загружен 4 раз(а).). Свежий СОС есть в хранилище сертификатов, но без доступа к интернету проверка на отзыв не проходит. Если есть некий флаг отключающий использование интернета КриптоПРО CSP, то хотелось бы его узнать и для версии "4.х" и для версии "5.х". Сервер Linux - что-то на основе Ubuntu. Спасибо. С уважением, Константин Ткачук.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 05.04.2017(UTC) Сообщений: 363   Сказал «Спасибо»: 3 раз Поблагодарили: 54 раз в 53 постах
|
Добрый день! CRL только личного сертификата установлены локально или всех сертификатов из цепочки? В какое хранилище он/и установлены?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2014(UTC) Сообщений: 104  Откуда: Москва Сказал(а) «Спасибо»: 24 раз
|
Здравствуйте.
Сертификат я привел в первом сообщении - его цепочка доверия состоит из двух сертификатов: сертификат УЦ + исходный сертификат. СОС для сертификата установлен в хранилище для локального пользователя. Цепочка доверия стоится от того же пользователя в хранилище которого был установлен СОС. Вам не сложно повторить это у себя на стенде - "КриптоПРО CSP" лезет в интернет как в версии "4.х", так и в версии "5.х".
С уважением, Константин Ткачук.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 05.04.2017(UTC) Сообщений: 363   Сказал «Спасибо»: 3 раз Поблагодарили: 54 раз в 53 постах
|
Не воспроизводится, вот этот CRL (  certcrl.zip (1kb) загружен 6 раз(а).) ставлю в uca, отключаю интернет, проверку проходит. Что Вы подразумеваете под "хранилищем локального пользователя", какое именно хранилище используете? Отредактировано пользователем 22 марта 2021 г. 13:30:31(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2014(UTC) Сообщений: 104  Откуда: Москва Сказал(а) «Спасибо»: 24 раз
|
Для открытия хранилища используется следующий код: Код:...
HCERTSTORE createNew() {
return CertOpenStore(CERT_STORE_PROV_SYSTEM, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, (HCRYPTPROV) 0,
isLocalMachine ? CERT_SYSTEM_STORE_LOCAL_MACHINE : CERT_SYSTEM_STORE_CURRENT_USER,
isCA ? L"CA" /* <- это intermediate trusted certificates */ : L"MY");
}
...
--- переменные isLocalMachine = false и isCA = true. То есть, для установки СОС используется пара констант: ... CERT_SYSTEM_STORE_CURRENT_USER, L"CA" ... Под "хранилищем локального пользователя" я понимаю использование константы CERT_SYSTEM_STORE_CURRENT_USER при вызове функции CryptoApi "CertOpenStore". Сейчас у меня заработало то, что не работало в пятницу при выключенном интернете. Но опасения все-равно остались. Давайте дождемся когда новый СОС для УЦ "протухнет" - это будет "23 марта 2021 г. 15:04:17" и я попробую еще раз не включая доступ к интернету и поставив через прикладной код "свежий" СОС построить цепочку доверия. Я правильно понял, что нет специального флага в настройках КриптоПРО CSP принудительно отключающего использование интернета? С уважением, Константин Ткачук.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 05.04.2017(UTC) Сообщений: 363   Сказал «Спасибо»: 3 раз Поблагодарили: 54 раз в 53 постах
|
Поняли правильно, такого флага нет.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2014(UTC) Сообщений: 104  Откуда: Москва Сказал(а) «Спасибо»: 24 раз
|
Кажется, я разобрался в чем дело. Похоже, что реализация функции CryptoAPI "CertAddEncodedCRLToStore" под Linux от КриптоПРО отличается от реализации этой же функции под Windows. Под Windows СОС переданный в функцию "CertAddEncodedCRLToStore" появляется в хранилище немедленно, а в реализации от КриптоПРО это происходит только после закрытия хендла хранилища. Это действительно так? Как можно добиться появления СОС-а в хранилище не закрывая хендл самого хранилища под Linux / КриптоПРО CSP (то есть эмулировать работу Windows - некий аналог функции "flush" для файлов)?
С уважением, Константин Ткачук.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2014(UTC) Сообщений: 104  Откуда: Москва Сказал(а) «Спасибо»: 24 раз
|
Коллеги? 1. Что с моим вопросом из предыдущего сообщения? Просто у нас идет установка не одного СОС-а, а порядка 2500 и открывать / закрывать хранилище 2500 раз выглядит не очень корректным. Тем более, что чем больше объектов в хранилище - тем дольше оно открывается. Поэтому я и спрашиваю: как можно добиться появления СОС-а в хранилище не закрывая хендл самого хранилища под Linux / КриптоПРО CSP? 2. Обнаружилось странное поведение функции CryptoAPI "CertAddEncodedCRLToStore" под Linux / КриптоПРО CSP. Пока в хранилище есть старая версия СОС в него не устанавливается новая. Вот так вызывается функция: Код:...
BOOL ret = CertAddEncodedCRLToStore(hStore, X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, (BYTE*) crl, crl_len, CERT_STORE_ADD_NEW, NULL);
...
--- в хранилище "CA" ровно один СОС: ============================================================================= 1------- Issuer : OGRN=1234567890123, INN=001234567890, STREET=ул. Сущёвский вал д. 18, C=RU, S=г. Москва, L=Москва, O="ООО ""КРИПТО-ПРО""", CN="Тестовый УЦ ООО ""КРИПТО-ПРО""" ThisUpdate: 22/03/2021 09:20:17 UTC NextUpdate: 23/03/2021 12:04:17 UTC AuthKeyID : 9b855efb81dc4d59075163cfbedfda2c7fc9443c ============================================================================= --- и пока он не удален новая версия СОС-а от УЦ в хранилище не устанавливается, хотя функция "CertAddEncodedCRLToStore" возвращает "успех". Если удалить СОС из хранилища при помощи утилиты "./certmgr -delete -crl -store uca", то новая версия устанавливается без проблем - тем же кодом. Как быть? Какой флаг указать, чтобы новая версия СОС ставилась поверх старой без ручной чистки хранилища? С уважением, Константин Ткачук.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 16.04.2008(UTC) Сообщений: 1,500
Сказал(а) «Спасибо»: 42 раз Поблагодарили: 609 раз в 421 постах
|
Здравствуйте. В КриптоПро CSP 5.0 R2 начиная с 2020-09-28 КриптоПро CSP 5.0.11944 Jackalope появилась возможность вызвать CertControlStore(CERT_STORE_CTRL_COMMIT). А какая версия CSP у вас (вместе с номером сборки)? По поводу CertAddEncodedCRLToStore(CERT_STORE_ADD_NEW): https://docs.microsoft.c...certaddencodedcrltostoreпри наличии CRL в хранилище он не будет заменён. При этом должна вернуться ошибка - в этом месте мы, вероятно, ведём себя не точно. Но рецептом успеха, кажется, будет добавление в режиме CERT_STORE_ADD_REPLACE_EXISTING. Отредактировано пользователем 23 марта 2021 г. 18:58:49(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 10.07.2014(UTC) Сообщений: 104  Откуда: Москва Сказал(а) «Спасибо»: 24 раз
|
1. Не получается вызвать "CertControlStore" - выдает ошибку:
0x78 (This function is not supported on this system.)
Версия КриптоПРО CSP ("csptestf -enum -info"):
CSP (Type:80) v5.0.10008 KC2 Release Ver:5.0.11998 OS:Linux CPU:AMD64 FastCode:READY:DISABLED (RSA; ).
Версия ОС ("cat /etc/*-release"):
DISTRIB_ID="AstraLinuxSE" DISTRIB_DESCRIPTION="Astra Linux SE 1.6 (Smolensk)" DISTRIB_RELEASE=1.6 DISTRIB_CODENAME=smolensk ...
Вот так вызываю:
ret = CertControlStore(hStore, CERT_STORE_CTRL_COMMIT_FORCE_FLAG, CERT_STORE_CTRL_COMMIT, NULL);
2. Еще одна странная вещь, в ответ на команду "./certmgr -list -crl -store uca" получаю ошибку:
Certmgr 1.1 (c) "КРИПТО-ПРО", 2007-2020. Программа для работы с сертификатами, CRL и хранилищами. ============================================================================= Список CRL пуст
Требуемый сертификат не существует.
[ErrorCode: 0x8010002c]
Что посоветуете?
С уважением, Константин Ткачук.
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро CSP 4.0
»
Как запретить КриптоПРО CSP обращаться к интернету при проверке сертификата на отзыв?
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close