Цифровая подпись с использованием сертификата клиента в 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

Другие вопросы по тегам