12.05.2006 22:34:06ошибка Certificate for recipient(s) specified in the EnvelopedData object cannot be found Ответов: 7
Полина
На стороне клиента пользователь выбирает сертификат для зашифрования (сертификат для этого подходит) все нормально шифруется

EnvelopedData.Content=form1.un.value;
var e=EnvelopedData.Encrypt(CAPICOM_ENCODE_BASE64);
form1.un.value=e;
если попробовать расшифровать прямо сразу же, то все отлично расшифровывается.
Но если послать на сервер и попробовать там расшифровать
EnvelopedData.Decrypt(Request.Form("un"));
то возникает ошибка
Certificate for recipient(s) specified in the EnvelopedData object cannot be found.
Отчего так, подскажите?
 
Ответы:
15.05.2006 12:49:55Kirill Sobolev
Сертификат получателя не установлен в "Личных"
15.05.2006 18:37:03Полина
Сертификат получателя как раз установлен в личных, причем, как в currentUser, так и в localMachine. У меня есть соображение по этому поводу, что для проверки скрипт лезет в личное хранилище currentUser, но его открыть не может, т.к. скрипт выполняется на сервере. Хотя, можеь быть я не права.
16.05.2006 10:19:08Kirill Sobolev
CAPICOM лезет только в CU/My
если скрипт выполняется на сервере (ASP), то он будет искать сертификат в личном хранилище пользователя, под которым работает IIS.
16.05.2006 21:17:31Полина
в My/CU сертификат лежит, с секретным ключом... а ошибка так и есть...
я попробовала из скрипта на сервере открыть хранилище CU/My, оно открылось, но Count вернуло значение 0, как будто там нет сертификатов, а их там полно!
как так? что же неправильно?
16.05.2006 23:00:41Полина
у меня установлен IIS, клиент и сервер на одной машине.
17.05.2006 9:50:41Kirill Sobolev
Все правильно - у пользователя, под которым IIS работает сертификатов нет. Измените учетную запись в оснастке IIS - <веб-узел> - Свойства - Безопасность каталога - Анонимный доступ - Учетная запись для анонимного доступа на ту, для которой установлен сертификат.
17.05.2006 20:19:17Полина
спасибо Вам огромное!!! сама бы я когда еще доперла :)