Подпись js на chrome с хранилищем ключей ОС
W3C работает над http://www.w3.org/TR/WebCryptoAPI/
определить способ генерации цифровых подписей, шифрования и т. д. из JavaScript. В основном определяет новый объект crypto
внутри window
объект в DOM
который должен предоставлять javascript с функциями подписи и шифрования. Chrome начинает реализовывать этот объект, который в настоящее время доступен в его движке javascript (я думаю, что в стадии бета-тестирования), я делаю некоторые попытки генерировать некоторые подписи с ним, кажется, работает правильно, однако я думаю, что наиболее полезный способ генерировать цифровые подписи с этот новый объект использует закрытые ключи в хранилище ключей ОС вместо автоматически сгенерированного материала ключа, но этот доступ не рассматривается в этом рабочем проекте.
Я годами работаю с подписным апплетом, чтобы иметь дело с хранилищем ключей ОС (MS, Firefox KS, MAC OS X), но я хочу сделать это напрямую в javascript, если возможно избежать всех проблем, которые апплет создает в последние дни... новые требования безопасности оракула, новые атрибуты MANIFEST.MF, плагины для блокировки браузера и т. д., которые являются настоящей болью!
Поэтому я ищу способ сделать это с помощью javascript и, похоже, все основные браузеры идут своим путем:
В Internet Explorer есть ActiveXObject для доступа к хранилищу ключей Windows:
// instantiate the CAPICOM objects var store = new ActiveXObject("CAPICOM.Store"); store.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY); ...
Для доступа к Firefox Keystore кажется, что Firefox добавляет
signText
метод вwindow.crypto
(больше информации о реализации Firefox webCryptoAPI здесь и о собственной реализации здесь):window.crypto.signText("textToSign", "ask");
РЕДАКТИРОВАТЬ: Этот метод Firefox является устаревшим, начиная с версии 34, потому что это не стандарт: https://developer.mozilla.org/en-US/docs/Archive/Mozilla/JavaScript_crypto
Однако на Chrome кажется, что в настоящее время не существует ничего, чтобы сделать то же самое.
Так кто-нибудь знает, как можно добиться этого в Chrome? Кто-нибудь знает общий способ сделать это во всех браузерах? Любой совет, чтобы дать мне в правильном направлении, будет оценен.
Спасибо!
1 ответ
Вам нужно написать активный компонент, который будет обращаться к MS Crypto Store и выполнять криптографические операции. Это может быть либо апплет Java, либо расширение браузера Chrome с использованием NativeClient SDK. Апплет Java будет работать в MSIE, Firefox, Chrome и большинстве других браузеров, но на клиентском компьютере должна быть установлена JRE (среда выполнения Java).