Ошибка при работе с КриптоПРО: Keyset does not exist

Если у вас есть веб-служба которая использует шифрование для обмена, возможна ошибка Keyset does not exist.

Один из вариантов из-за чего могла возникнуть эта ошибка: при использовании ключей и сертификатов в веб-службах Windows необходимо удостовериться, что учетная запись, под которой выполняется служба имеет доступ к сертификату и связанному с ним ключевому контейнеру. Для IIS права доступа необходимо проверять для учетной записи, под которой исполняется Application Pool (обычно это DefaultAppPool). Для доступа к сертификатам пользователей параметр Load User Profile должен быть выставлен в true. Рекомендуется для веб-служб использовать сертификаты и ключи, находящиеся в хранилищах локального компьютера.

При этом необходимо правильно установить права на доступ к секретным ключам. Это можно сделать через оснастку сертификаты (командная строка - mmc - добавить оснастку Сертификаты). Далее необходимо выбрать нужный сертификат, в контекстном меню выбрать пункт Все задачи (All Tasks) - Управление закрытыми ключами... (Manage Private Keys...) Далее добавить разрешения для учетной записи, под которой исполняется Application Pool (обычно это DefaultAppPool)


C# CryptoPro