Сертификат и цифровая подпись - PullRequest
0 голосов
/ 07 ноября 2019

Мне нужно небольшое руководство о том, как реализовать подписание документов в разрабатываемой нами сетевой системе распространения документов. В простейшем случае пользователь A будет входить на веб-сайт и создавать пакет данных. Word / Pdfs могут быть добавлены в пакет. Пользователь А подпишет этот документ (ы) с помощью цифрового сертификата. Пользователь А может назначить это другим пользователям для просмотра документов. Они также могут подписывать документы.

Теперь я знаю, как подписать данные цифровым способом с помощью C #. Чего я не знаю, так это как сгенерировать сертификат, когда каждый пользователь заходит на сайт. Сайт защищен сертификатом DigiCert.

Какой подход я должен использовать для создания цифрового сертификата для каждого пользователя? Как только у меня будет файл .pfx, я думаю, что смогу сохранить его в базе данных и использовать его. Любое руководство по этому вопросу будет с благодарностью!

спасибо

1 Ответ

0 голосов
/ 10 ноября 2019

Я принимаю, чтобы сгенерировать цифровой сертификат для каждого пользователя? Как только у меня будет файл .pfx, я думаю, что смогу сохранить его в базе данных и использовать его ..

Это то, что я называю «наивным подходом» (читай упрощенно). Вы рассматриваете возможность хранения (возможно, даже создания) пар ключей для пользователей в веб-приложении. Самым большим недостатком этого подхода является то, что кто-то с низким уровнем доступа к системе (администраторам) или с утечкой базы данных может получить доступ к закрытому ключу пользователя. Чтобы иметь безопасное решение (с учетом подписи), закрытый ключ не должен оставлять своего пользователя

. Делая все в веб-среде, вы можете рассмотреть возможность использования SubtleCrypto или других клиентских библиотек сайта, однако по адресуВ этот момент я не вижу разумного способа управления ключами для чистых веб-приложений. Возможно, вы можете хранить ключи и сертификат пользователя в localStorage , но это оставляет некоторое место для зловредных сценариев, чтобы утечка ключей.

Многие реальные безопасные решения работают с защищенными модулями (например, с криптокартами), к сожалению, веб-библиотеки не имеют доступа к модулям (обычно это интерфейс pkcs11). В качестве решения обычно часть подписи запускается как пользовательский код на компьютере пользователя. Раньше это был ActiveX, Applet, ... теперь это часто "драйвер", представленный как веб-сервер, связанный с "localhost", поэтому служба подписи может использоваться как веб-API из веб-приложений.

...