Ограничения безопасности браузеров не разрешают доступ javascript к хранилищу ключей системного сертификата или смарт-карт. Раньше можно было использовать java-апплеты, но с последними обновлениями браузера это уже невозможно.
Современные решения для цифровой подписи в браузерах требуют установки настольного программного обеспечения на компьютер пользователя. Рабочий процесс выглядит следующим образом:
Установка : Пользователь устанавливает программное обеспечение для настольного компьютера на свой компьютер. Программное обеспечение устанавливает самозаверяющий сертификат и включает встроенный браузер, который прослушивает порт компьютера и запускает его как службу
Веб-приложение запрашивает подпись локального программного обеспечения с использованием безопасного веб-соединения. Например https://localhost:1234/sign?doc=xxxx.
Браузер ожидает результата
Локальное приложение получает документ, просит пользователя выбрать сертификат или ввести карточку и сделать подпись. Поскольку это локальное приложение, нет никаких ограничений безопасности
Веб-приложение получает результат. Он может запросить локальное приложение через службу REST или открыть веб-сокет.
Концепция проста ( веб-приложение, которое запрашивает подпись у локального приложения ), но построение приложения этого типа довольно сложное, поскольку необходимо учитывать множество других факторов:
Установка и распространение программного обеспечения
Безопасность и шифрование
Форматы цифровой подписи: XAdES, CAdES, PAdES и т. Д. Они могут быть реализованы в приложении или использовать службу подписи в 3 этапа, когда документы находятся на сервере и один хэш подписывается локально
Поэтому я рекомендую использовать существующее решение:
@ firma + Autofirma : решение с открытым исходным кодом, продвигаемое и используемое государственной администрацией в Испании
SD-DSS + nexU (lowina): решение с открытым исходным кодом, предложенное Европейской комиссией. Проверьте демо здесь
Подписание Chrome-токена : Расширение Chrome и Firefox для подписи с помощью вашего eID в Интернете, разработанное для правительства Эстонии
Sinadura также является инициативой с открытым исходным кодом, и из того, что я видел, она работает аналогичным образом, но я не знаю, есть ли у нее важные ссылки, и я не нашел API