Автор: Евгений_СК 
1. не совсем понял, как для метода Open задавать значение второго параметра - нашел просто в примерах, что если хранилище текущего пользователя, то надо писать "My". Это какое-то фиксированное значение? А как указать, что хранилище - локального компьютера?
Как я понимаю, там было не совсем верное пояснение, все с точностью наоборот. Значение CAPICOM_CURRENT_USER_STORE как раз говорит что открывать нужно хранилища пользователя, а не компьютера. Соответственно надо смотреть в документации какой значение соответствует хранилищам компьютера (наугад 1). CAPICOM_MY_STORE говорит, что среди хранилищ пользователя (которые выбраны первым параметром) берем хранилище "Личные".
Пояснение: "My" это фиксированное нелокализованное имя хранилища, в локализованном на русский язык виде это же хранилище называется "Личные". Во избежание проблем рекомедуется использовать при обращении нелокализованное имя хранилища. Данное хранилище предназначено для собственных сертификатов пользователя. Как правило к ним прикреплен закрытый ключ и они используются для подписи/шифрования.
Есть и другие значения - "CA" "CAcerts" "TrustedUsers" "TrustedPeople" и т.д., некоторые могут отсутствовать в завичимости от версии и редакции операционной системы, нахождения компьютера в домене, установленных программ и т.п. При желании можно создать свое хранилище, в котором будут сертификаты только для Вашего ПО - видел антивирусы, создающие отдельное хранилище для сертификатов, выданных антивирусом самому себе. Для перечисления, какие хранилища доступны на компьютере есть соответствующая функция в CryptoAPI.
Цитата:2. Как я понял, если шифровать не Cades Bes, а более защищенным вариантом Cades, то надо подключать службу локального времени. Как это правильно сделать?
Более точно нужно установить TSP-клиент, который будет отправлять запросы к серверу доверенного времени. Такой клиент есть в необязательных компонентах КриптоПро CSP, но на клиент нужна лицензия и если не ошибаюсь отдельная от CSP. Однако есть версии и других отечественных криптопровайдеров, детали подключения у всех разные и могут быть совместимы с разными серверами доверенного времени. Сервер доверенного времени может быть не Ваш собственный (так как установка собственного как правило выливается в полноценный УЦ и несколько миллионов рублей плюс возможно аккредитация, гораздо дороже чем подписка на услуги сервера доверенного времени какого-либо аккредитованного УЦ). Кроме того, как правило понадобится и OCSP-клиент. Как именно подключить в программном виде сказать не могу, не занимался вопросом, скорее всего понадобится указать адрес сервера доверенного времени и адрес оcsp-ответчика УЦ которым выпущен сертификат, если ответчик не указан в сертификате.
При первой установке КриптоПро (без указания купленной лицензии) активируется ограниченная по времени пробная серверная лицензия и временные пробные лицензии на TSP OCSP клиенты плюс в УЦ КриптоПро есть тестовый сервер доверенного времени - для просмотра что и как должно хватить.
Цитата:Можете перечислить последовательность действий, которую необходимо выполнить пользователю, чтобы в итоге он мог пользоваться написанным мною кодом для подписи данных?
Полагаю, что такую же как и Вам (для тестирования конечно можно обойтись пробной версией, но это неудобно) - приобрести 3 лицензии (CSP,TSP,OCSP), установить программы (CSP,TSP,OCSP,Сadescom) с указанием лицензий, получить сертификат у УЦ, установить корневые/промежуточные сертификаты УЦ и свой сертификат, подписаться на услуги сервера доверенного времени, указать адреса сервера доверенного времени и ocsp-ответчика. Примерно так.
Либо Вы можете сами подписаться и централизованно приобрести лицензии затем перепродать услугу сервера доверенного времени и лицензии клиентам вместе с написанным кодом, тогда в коде можно сразу указать адреса, остальные действия клиентов существенно не изменятся. Некоторые серверы предлагают разные тарифы в зависимости от количества запросов и аутентифицируют клиента по логину/паролю. Бывают сутуации, когда дешевле приобрести безлимитную подписку сразу для всех организаций-клиентов (подписывающих только несколько раз в месяц) чем приобретать минимальный тариф каждой такой организации.
Детали могут зависеть от назначения подписи и объема финансирования - если будет использоваться только для внутреннего обращения (и обмена документов по договору с иной организацией) можно создать свой неаккредитованный (но на основе сертифицированных СКЗИ) УЦ с сервером доверенного времени и ocsp-ответчиком. А если используется для юридически значимой подписи, то нужно обращаться к аккредитованному УЦ или аккредитовать свой УЦ.
Отредактировано пользователем 20 сентября 2018 г. 7:05:27(UTC)
| Причина: уточнение