Цифровая подпись с использованием сертификата клиента в ASP.Net
Я пытаюсь подписать информацию цифровой информацией с помощью закрытого ключа. Я знаю, как это сделать в настольном клиентском приложении с.Net, но я не уверен, как это сделать в ASP.Net. Он будет использоваться в интрасети с использованием IE8. Если это делается через ASP.Net, я предполагаю, что закрытый ключ не отправляется на сервер, когда пользователь вводит пароль в свой сертификат при переходе на сайт (https, 2-way SSL), но я не уверен. Если нет способа получить доступ к закрытому ключу клиента на сервере, то как я могу что-то подписать в браузере? Могу ли я использовать JavaScript?
Редактировать: я думаю, что было бы полезно узнать в первую очередь, если это можно сделать на сервере или это должно быть сделано на клиенте?
1 ответ
Закрытый ключ клиента-сертификата НЕ передается на сервер.
ЕСЛИ вам действительно нужно / нужно что-то подписать сертификатом клиента, ТОГДА вам нужен компонент на стороне клиента... AFAIK это невозможно с javascript... существуют решения, использующие Flash, Silverlight, Java-апплеты в качестве части Страница ASP.NET для выполнения того, что вы просите...
Возможность сделать это исключительно на стороне сервера - верный признак нарушения безопасности (в отношении сертификата клиента) ИМХО.
Для современных браузеров, не поддерживающих Flash, Silverlight или Java-апплеты, можно использовать расширения браузера для подписи из браузера с помощью JavaScript.
Ваш вопрос:
Изменить: я думаю, что было бы полезно узнать в первую очередь, можно ли это сделать на сервере или это нужно сделать на клиенте?
Ответ: Полный контент, который будет подписан, а именно. PDF, файл данных или XML остается на сервере, и только хэш содержимого будет отправлен в браузер клиента для подписи с использованием цифровой подписи клиента, а подписанный контент будет отправлен обратно на сервер.
См. Ниже ответы SO в зависимости от содержимого, которое необходимо подписать:
Подписание PDF с помощью обычного JavaScript
Подписать контент, XML или данные
Зарегистрируйте цифровую подпись пользователя и аутентифицируйте пользователя
Для шифрования / дешифрования в браузере, signXML, signHash, signData