Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.08.2010(UTC) Сообщений: 74 Откуда: Омск
Сказал(а) «Спасибо»: 2 раз
|
Добрый день. Подскажите, пожалуйста, на машине Windows Server 2012 установлена Crypto Pro 4 Есть своя Windows служба, которая должна зашифровывать/расшифровывать данные. Служба выполняет вход от имени Локальная Система. Контейнер располагается на локальном диске (он единственный). Сертификат установлен в Личное хранилище Локального Компьютера с привязкой к закрытому ключу. Средствами Крипто ПРО нажимали на кнопку протестировать, все в порядке. Проблема в следующем, при попытке расшифровать данные, получаю ошибку от CryptDecryptMessage - Не удается найти сертификат и закрытый ключ для расшифровки. (Исключение из HRESULT: 0x8009200C) Код:
// Cхематично метод расшифровки
CertOpenSystemStore(IntPtr.Zero, "MY");
CryptDecryptMessage
Попробовал вывести список контейнеров, доступных службе (CryptGetProvParam PP_ENUM_CONTAINERS) - контейRjнер находит. Служба работала и код не менялся уже лет 5, но при попытки развернуть это на новом сервере - не удачны.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,683   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
Здравствуйте.
Сверьте серийные номера сертификатов (из зашифрованного файла и из своего сертификата) |
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,683   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
Если зашифровать на свой сертификат - расшифровывает служба?
Если Да - нет проблем, Вам поступил зашифрованный файл для другого получателя.
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.08.2010(UTC) Сообщений: 74 Откуда: Омск
Сказал(а) «Спасибо»: 2 раз
|
Спасибо, за советы. Реализовал тестовый сценарий, когда шифруем данные своим сертификатом и пробуем расшифровать. Проблема повторилась, при попытке расшифровать получаю ошибку
"Не удается найти сертификат и закрытый ключ для расшифровки. (Исключение из HRESULT: 0x8009200C)"
Под подозрение падает способ открытия хранилища. Сейчас это так CertOpenSystemStore(IntPtr.Zero, "MY"); Первый параметр NULL так как не используется согласно документации (https://docs.microsoft.com/en-us/windows/win32/api/wincrypt/nf-wincrypt-certopensystemstorew) Но в тоже время, увидел пример расшифровки (https://docs.microsoft.com/en-us/windows/win32/seccrypto/example-c-program-using-cryptencryptmessage-and-cryptdecryptmessage), где первый параметр задают.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.08.2010(UTC) Сообщений: 74 Откуда: Омск
Сказал(а) «Спасибо»: 2 раз
|
Попробовал вызвать CryptAcquireContext перед тем, как вызывать CryptOpenSystemStore, не помогло. Скопировал контейнер из считывателя Диск D, в Реестр, переустановил сертификат. Тоже не помогло.
Может такое быть, что пользователю Локальная Система нужно дополнительно где-то какие-то права выдать?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,683   Сказал «Спасибо»: 572 раз Поблагодарили: 2302 раз в 1803 постах
|
Подписание работает из службы с этим сертификатом? |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.08.2010(UTC) Сообщений: 74 Откуда: Омск
Сказал(а) «Спасибо»: 2 раз
|
Нет, не работает. Пишет, что не смог найти сертификат в хранилище MY
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 23.08.2010(UTC) Сообщений: 74 Откуда: Омск
Сказал(а) «Спасибо»: 2 раз
|
Удалось сдвинуться с места, заменой функции CryptOpenSystemStore на CryptOpenStore
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close