Цифровая подпись документа XML с помощью закрытого ключа смарт-карты с использованием JavaScript - PullRequest
2 голосов
/ 23 мая 2019

Я хочу, чтобы веб-приложение подписывало XML-документы с помощью закрытого ключа внутри смарт-карты. Если закрытый ключ каким-либо образом можно отправить на сервер, я мог бы подписать его на Java, имея java.security доступ к хранилищу сертификатов Windows и javax.xml.crypto для преобразования xml документ для стандарта подписи xml, но закрытый ключ не может быть экспортирован со смарт-карты.

Даже если бы я мог использовать Java-апплеты или создать Java-приложение, работающее на клиентском компьютере (используя Java Web Start), во-первых, я бы предпочел, чтобы пользователь не устанавливал Java, аддон для браузера или любое Java-приложение на своих машинах, и, во-вторых, как Java-апплеты, так и Java Web Start устарели. Oracle говорит людям искать другие решения.

Очевидным выбором будет использование JavaScript, но для этого требуется доступ к закрытому ключу (которого у нас нет, так как закрытый ключ не может быть экспортирован со смарт-карты), или требуется дополнительное программное обеспечение для быть установленным для браузера, чтобы общаться с устройством для чтения смарт-карт (с каким-то родным кодом).

У меня есть Java-код, который позволяет мне подписывать XML-документы с помощью закрытого ключа смарт-карты, открывая хранилище сертификатов Windows и используя несколько абстракций для подписи. Сейчас я склонен к тому, чтобы пользователь установил аддон, который позволяет клиентскому компьютеру запускать этот код, но я бы предпочел использовать JavaScript, чтобы пользователю ничего не нужно было устанавливать.

Итак, мои вопросы таковы: могу ли я подписать XML-документы с помощью закрытого ключа смарт-карты с помощью JavaScript? Есть ли другой способ сделать это без установки дополнительного программного обеспечения на клиентском компьютере?

...