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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline idtks  
#1 Оставлено : 19 марта 2021 г. 18:29:22(UTC)
idtks

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

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

Сказал(а) «Спасибо»: 21 раз
Здравствуйте.

Есть 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.

Спасибо.

С уважением, Константин Ткачук.
Offline Михаил Селезнёв  
#2 Оставлено : 22 марта 2021 г. 12:10:13(UTC)
Михаил Селезнёв

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

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 54 раз в 53 постах
Добрый день!
CRL только личного сертификата установлены локально или всех сертификатов из цепочки? В какое хранилище он/и установлены?
Offline idtks  
#3 Оставлено : 22 марта 2021 г. 12:20:01(UTC)
idtks

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

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

Сказал(а) «Спасибо»: 21 раз
Здравствуйте.

Сертификат я привел в первом сообщении - его цепочка доверия состоит из двух сертификатов: сертификат УЦ + исходный сертификат. СОС для сертификата установлен в хранилище для локального пользователя. Цепочка доверия стоится от того же пользователя в хранилище которого был установлен СОС. Вам не сложно повторить это у себя на стенде - "КриптоПРО CSP" лезет в интернет как в версии "4.х", так и в версии "5.х".

С уважением, Константин Ткачук.
Offline Михаил Селезнёв  
#4 Оставлено : 22 марта 2021 г. 13:29:24(UTC)
Михаил Селезнёв

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

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 54 раз в 53 постах
Не воспроизводится, вот этот CRL ( certcrl.zip (1kb) загружен 6 раз(а).) ставлю в uca, отключаю интернет, проверку проходит. Что Вы подразумеваете под "хранилищем локального пользователя", какое именно хранилище используете?

Отредактировано пользователем 22 марта 2021 г. 13:30:31(UTC)  | Причина: Не указана

Offline idtks  
#5 Оставлено : 22 марта 2021 г. 15:31:52(UTC)
idtks

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

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

Сказал(а) «Спасибо»: 21 раз
Для открытия хранилища используется следующий код:

Код:
...
        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 принудительно отключающего использование интернета?

С уважением, Константин Ткачук.
Offline Михаил Селезнёв  
#6 Оставлено : 22 марта 2021 г. 15:34:07(UTC)
Михаил Селезнёв

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

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

Сказал «Спасибо»: 3 раз
Поблагодарили: 54 раз в 53 постах
Поняли правильно, такого флага нет.
Offline idtks  
#7 Оставлено : 22 марта 2021 г. 17:10:25(UTC)
idtks

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

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

Сказал(а) «Спасибо»: 21 раз
Кажется, я разобрался в чем дело. Похоже, что реализация функции CryptoAPI "CertAddEncodedCRLToStore" под Linux от КриптоПРО отличается от реализации этой же функции под Windows. Под Windows СОС переданный в функцию "CertAddEncodedCRLToStore" появляется в хранилище немедленно, а в реализации от КриптоПРО это происходит только после закрытия хендла хранилища. Это действительно так? Как можно добиться появления СОС-а в хранилище не закрывая хендл самого хранилища под Linux / КриптоПРО CSP (то есть эмулировать работу Windows - некий аналог функции "flush" для файлов)?

С уважением, Константин Ткачук.
Offline idtks  
#8 Оставлено : 23 марта 2021 г. 16:30:20(UTC)
idtks

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

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

Сказал(а) «Спасибо»: 21 раз
Коллеги?

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", то новая версия устанавливается без проблем - тем же кодом.

Как быть? Какой флаг указать, чтобы новая версия СОС ставилась поверх старой без ручной чистки хранилища?

С уважением, Константин Ткачук.
Offline Андрей Русев  
#9 Оставлено : 23 марта 2021 г. 18:45:02(UTC)
Русев Андрей

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

Группы: Администраторы, Участники
Зарегистрирован: 16.04.2008(UTC)
Сообщений: 1,260

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 442 раз в 322 постах
Здравствуйте.
В КриптоПро 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)  | Причина: Не указана

Официальная техподдержка. Официальная база знаний.
Offline idtks  
#10 Оставлено : 24 марта 2021 г. 11:49:27(UTC)
idtks

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

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

Сказал(а) «Спасибо»: 21 раз
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]

Что посоветуете?

С уважением, Константин Ткачук.
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.