| ||||
| ||||
На стороне клиента пользователь выбирает сертификат для зашифрования (сертификат для этого подходит) все нормально шифруется 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. Отчего так, подскажите? | ||||
Ответы: | ||||
| ||||
Сертификат получателя не установлен в "Личных" | ||||
| ||||
Сертификат получателя как раз установлен в личных, причем, как в currentUser, так и в localMachine. У меня есть соображение по этому поводу, что для проверки скрипт лезет в личное хранилище currentUser, но его открыть не может, т.к. скрипт выполняется на сервере. Хотя, можеь быть я не права. | ||||
| ||||
CAPICOM лезет только в CU/My если скрипт выполняется на сервере (ASP), то он будет искать сертификат в личном хранилище пользователя, под которым работает IIS. | ||||
| ||||
в My/CU сертификат лежит, с секретным ключом... а ошибка так и есть... я попробовала из скрипта на сервере открыть хранилище CU/My, оно открылось, но Count вернуло значение 0, как будто там нет сертификатов, а их там полно! как так? что же неправильно? | ||||
| ||||
у меня установлен IIS, клиент и сервер на одной машине. | ||||
| ||||
Все правильно - у пользователя, под которым IIS работает сертификатов нет. Измените учетную запись в оснастке IIS - <веб-узел> - Свойства - Безопасность каталога - Анонимный доступ - Учетная запись для анонимного доступа на ту, для которой установлен сертификат. | ||||
| ||||
спасибо Вам огромное!!! сама бы я когда еще доперла :) | ||||