3

W3C работает над http://www.w3.org/TR/WebCryptoAPI/, чтобы определить способ генерации цифровых подписей, шифрования и т. Д. Из javascript. В основном определяет новый объект crypto внутри объекта window в DOM, который должен предоставить javascript с функциями подписи и шифрования. Chrome начинает реализовывать этот объект, который в настоящее время доступен в его javascript-движке (я думаю, на стадии бета-тестирования), я делаю некоторые попытки сгенерировать некоторые подписи с ним, кажется, работает правильно, однако я думаю, что наиболее подходящий способ генерации цифровых подписей с этот новый объект использует закрытые ключи в хранилище ключей OS вместо этого для автогенерированного ключевого материала, но этот доступ не рассматривается в этом рабочем черновике.js подпись на chrome с OS keystore

Я работаю в течение нескольких лет с подписью апплета, чтобы иметь дело с OS keystore (MS, Firefox KS, MAC OS X), но я хочу сделать прямо в javascript, если можно избежать всех проблем, которые апплет производит последним дней ... новые требования безопасности оракула, новые атрибуты MANIFEST.MF, блокировки блокировки браузера и т. д., которые являются настоящей болью!

Так что я смотрю на яваскрипт способ сделать это, и кажется, что все основные браузера принять свой собственный путь:

  • В Internet Explorer есть ActiveXObject для доступа к хранилищу ключей окна:

    // instantiate the CAPICOM objects 
    var store = new ActiveXObject("CAPICOM.Store"); 
    store.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY); 
    ... 
    
  • Чтобы получить доступ к светлячок Keystore кажется, что светлячок добавить метод signText в window.crypto (подробнее о реализации светлячок webCryptoAPI here и о собственной реализации here):

    window.crypto.signText("textToSign", "ask");

EDIT: Этот метод светлячок это устаревшим, начиная с версии 34, потому что это не стандарт: https://developer.mozilla.org/en-US/docs/Archive/Mozilla/JavaScript_crypto

Однако на хром кажется, что в настоящее время нет, не существует ничего делать то же самое.

Итак, кто-нибудь знает, как добиться этого в Chrome? Кто-нибудь знает общий способ js сделать это во всех браузерах? Любые советы, чтобы дать мне в правильном направлении, будут оценены.

Спасибо!

ответ

2

Вам необходимо написать активный компонент, который будет иметь доступ к хранилищу MS Crypto Store и выполнить криптографическую операцию. Это может быть либо апплет Java, либо расширение браузера Chrome, используя NativeClient SDK. Java-апплет будет запускаться в MSIE, Firefox, Chrome и большинстве других браузеров, но для этого требуется среда JRE (среда выполнения Java), установленная на клиентском компьютере.

+0

Спасибо за ответ, я работаю в течение нескольких лет с помощью апплетов, и каждый день сложнее справляться с проблемами, которые он создает. ошибок, новых требований безопасности и т. д. К моменту, когда вы комментируете, я смотрю на NativeClient SDK. +1. Благодарю. – albciff

+0

@albciff Мой опыт работы с java-апплетами ** абсолютно одинаковый **, но я не знаю ни одной другой мультиплатформенной технологии, которая может расширить браузер с помощью расширенных возможностей цифровой подписи. BTW Я только что изучил NativeClient SDK более близко и, кажется, предоставляет только очень ограниченную функциональность: вы не можете получить доступ к файловой системе или загрузить сторонние библиотеки, необходимые для доступа к хранилищу MS Crypto. Дополнительную информацию см. В этой статье в списке рассылки native-client-discuss (https://groups.google.com/forum/#!topic/native-client-discuss/C9nR--vt-Ug). – jariq

+0

, так что, возможно, у нас одна и та же проблема ... Я занимаюсь апплетами в течение долгого времени, а в последнее время у меня больше проблем, чем когда-либо (java mantra: писать один раз подряд везде ... не применяются с апплетами, когда речь идет о ОС keystores). Я думаю, что javascript - это хороший способ сделать это, но пока вы сказали, что не все браузеры приносят эту функцию, и каждый браузер, который приносит, имеет свою собственную реализацию. Еще раз спасибо. – albciff

Смежные вопросы