Подписать XML-документ в веб-браузере, используя JavaScript

Я хотел бы подписать XML-документ (XMLDSig), который содержит конфиденциальные данные в веб-браузере, с помощью сертификата клиента, использующего только JavaScript.

Я провел исследование и выяснил, что в 2014–2015 годах в JS не было возможности подписать документ с сертификатом клиента. Тогда было три варианта:

  1. Java-апплет
  2. ActiveX компонент
  3. плагин для веб-браузера (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 и клиент, если требуется выход из браузера.

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