2016-11-08 3 views
1

Итак, до Windows 7 появился компонент Microsoft ActiveX: CAPICOM, который можно было вызвать из Javascript, а затем отобразить содержимое хранилища сертификатов на компьютере клиента. Затем клиент мог выбрать соответствующий сертификат и подписать некоторый документ с помощью закрытого ключа сертификата. Вот как доступ к хранилищу сертификатов заглянула в Javascript:Как подписать документ с закрытым ключом сертификата из браузера (альтернатива CAPICOM)?

var MyStore = new ActiveXObject("CAPICOM.Store"); 
var oCertificates = new ActiveXObject("CAPICOM.Certificates"); 
// attempt to open the personal certificate store 
MyStore.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY); 

Что альтернатива использованию CAPICOM в настоящее время? Я хочу, чтобы клиент мог подписать часть текста своим личным ключом в браузере, а затем отправить подписанный текст с открытым ключом на сервер. Возможно ли это?

Возможно, я могу использовать Java или Silverlight вместо чистого JavaScript? Что относительно PKI.js и аналогичный?

ответ

1

В целом в настоящее время не может из-за отсутствия поддержки браузеров для Java или silverlight.

Хром опустил поддержку плагинов NPAPI. Firefox объявила, что прекратит ее в 2017 году, Edge не получит поддержки. Microsoft устарела от Silverlight, и Oracle также объявила об отказе от подключаемого модуля браузера Java. Могут использоваться только старые версии IE.

Javascript криптографические библиотеки, такие как PKI.js, forge или встроенный WebCryptographyApi может быть использован для выполнения цифровой подписи, но они не имеют доступа к оперативной системе KeyStore, так что вы не можете получить доступ к установленным сертификатам

Альтернативы (не очень обнадеживающая):

  • Использование WebCryptographyApi загрузки сертификаты в браузере (не для смарта-карта)
  • Запустите локальное приложение установлено на устройстве и вызывать по протоколу, используя встроенный сервер HTTP или с хромированными сообщениями апите
  • Подождите терпеливо Key Discovery Api, который обеспечит доступ к хранилищу ключам OS в WebCrypto
0

Фактически я создал объект .NET ActiveX и использовал класс X509Certificate2UI и другие из того же пространства имен, чтобы отображать информацию о сертификатах и ​​подписывать некоторые данные.

Прокси: не нужно использовать CAPICOM.

Против: он по-прежнему является компонентом ActiveX и поэтому доступен только в Internet Explorer.

Но это было нормально для моего клиента, поэтому я пошел по этому пути.