Я принимаю, чтобы сгенерировать цифровой сертификат для каждого пользователя? Как только у меня будет файл .pfx, я думаю, что смогу сохранить его в базе данных и использовать его ..
Это то, что я называю «наивным подходом» (читай упрощенно). Вы рассматриваете возможность хранения (возможно, даже создания) пар ключей для пользователей в веб-приложении. Самым большим недостатком этого подхода является то, что кто-то с низким уровнем доступа к системе (администраторам) или с утечкой базы данных может получить доступ к закрытому ключу пользователя. Чтобы иметь безопасное решение (с учетом подписи), закрытый ключ не должен оставлять своего пользователя
. Делая все в веб-среде, вы можете рассмотреть возможность использования SubtleCrypto или других клиентских библиотек сайта, однако по адресуВ этот момент я не вижу разумного способа управления ключами для чистых веб-приложений. Возможно, вы можете хранить ключи и сертификат пользователя в localStorage , но это оставляет некоторое место для зловредных сценариев, чтобы утечка ключей.
Многие реальные безопасные решения работают с защищенными модулями (например, с криптокартами), к сожалению, веб-библиотеки не имеют доступа к модулям (обычно это интерфейс pkcs11). В качестве решения обычно часть подписи запускается как пользовательский код на компьютере пользователя. Раньше это был ActiveX, Applet, ... теперь это часто "драйвер", представленный как веб-сервер, связанный с "localhost", поэтому служба подписи может использоваться как веб-API из веб-приложений.