Подписать XML-документ в веб-браузере, используя JavaScript
Я хотел бы подписать XML-документ (XMLDSig), который содержит конфиденциальные данные в веб-браузере, с помощью сертификата клиента, использующего только JavaScript.
Я провел исследование и выяснил, что в 2014–2015 годах в JS не было возможности подписать документ с сертификатом клиента. Тогда было три варианта:
- Java-апплет
- ActiveX компонент
- плагин для веб-браузера (NPAPI, ...)
Есть ли новые возможности в наши дни? Мы находимся в 2018 году, и подавляющему большинству ресурсов, как я смог найти, 3-4 года. Поэтому мне действительно интересно, есть ли кросс-платформенное и кросс-браузерное решение, основанное исключительно на Javascript и некотором отраслевом стандарте.
0 ответов
В 2018 году с современными браузерами могут использоваться расширения браузера, которые обращаются к приложению, запущенному на (локальном) хост-устройстве браузера, для доступа к хранилищу сертификатов через JavaScript в браузере. Пожалуйста, обратитесь к этому SO-ответу для получения дополнительной информации.
signXML Javascript API описан в моем недавнем ответе SO
Мы создали API XMLDSIG, который вы можете использовать из браузера для создания подписей XMLDSIG в браузере.
Для подписи вам понадобится цифровой сертификат, мы используем то, что мы называем сертификатом Browser Bound, чтобы сделать это нормально. По сути, мы создаем сертификат с помощью Web Crypto, а затем подписываем его.
Если вам нужно использовать сертификат, созданный вне браузера, мы создали пакет, который мы называем FortifyApp, который позволяет вам использовать локально зарегистрированные сертификаты и смарт-карты с сертификатами и ключами в браузере.
Кроме того, вы можете импортировать файл PKCS#12, используя PKIjs, в браузер, а затем подписать его.
Для вышеперечисленного нет необходимости в Java или ActiveX, только Javascript и клиент, если требуется выход из браузера.