Доступ к сертификату браузера с помощью Forge

Мы работаем над безопасным приложением, использующим PKI. Как часть требования, нам необходимо создать приложение, независимое от браузера и платформы, которое поддерживает все виды сертификатов в браузере и на eTokens. Мы используем эти сертификаты для целей шифрования и дешифрования. Вся работа, связанная с PKI, должна выполняться на стороне клиента.

Я обнаружил библиотеку javascript под названием Forge https://github.com/digitalbazaar/forge/downloads.

Каким будет код для а) получения списка сертификатов из браузера с использованием подделки и доступа б) получения общедоступной информации о сертификате в) получения закрытого ключа для шифрования данных


person Kuntal Shah    schedule 11.04.2012    source источник


Ответы (1)


В настоящее время нет JS API для доступа к сертификатам в браузере. Обычно вы можете экспортировать их в файлы PKCS#12 (p12), которые Forge может прочитать. Имейте в виду, что пользователи абсолютно не захотят, чтобы сервер имел доступ к их закрытым ключам (которые также можно экспортировать в контейнер PKCS#12).

Если вам действительно нужен доступ к закрытым ключам в JS и у вас нет доступа к WebCrypto API (большинство браузеров еще не имеют его, поскольку он неполный), вам придется работать с пониженной безопасностью. А именно, сервер сможет получить доступ к закрытому ключу пользователя, о чем ему следует сообщить. Для этого должны быть сгенерированы новые пары ключей; существующие, которые пользователь может использовать в другом месте, не следует использовать повторно. В будущем у JS должен быть доступ к криптографическим функциям, которые используют закрытые ключи, не раскрывая материал ключа браузеру (защищая его от сервера). До тех пор единственный вариант, если вы должны использовать JS, — это доверие пользователя к серверу на каком-то уровне. Forge можно использовать для генерации пар ключей, создания сертификатов, создания p12 и т. д.

person dlongley    schedule 28.06.2013
comment
Привет, спустя 5 лет кажется, что еще нет способа расшифровать строку с помощью закрытого ключа клиентского сертификата в браузере... не так ли? - person Giox; 14.12.2018