Подписывать данные с помощью закрытого ключа на стороне клиента (JavaScript) - PullRequest
4 голосов
/ 21 марта 2011

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

Спасибо.

Ответы [ 4 ]

5 голосов
/ 23 марта 2011

Найден отличный инструмент для подписи .Он реализует RSA-SHA1 (работает отлично) и RSA-SHA256 (работает странно), и позволяет одновременно генерировать подпись с использованием закрытого ключа и проверять подпись с помощью сертификата.

3 голосов
/ 21 марта 2011

Я пошел тем же путем, что и вы, вам, вероятно, лучше реализовать что-то вроде oAuth.

Проблема с тем, что вы предлагаете, заключается в том, что абсолютно нет надежного способа хранения частногоключ на клиентском компьютере, и в настоящее время безопасно не возвращать открытый ключ на сервер, отличный от HTTPS (и если вы используете HTTPS, какой смысл в этом?)

Если вы действительно хотите продолжить,Есть несколько реализаций: http://shop -js.sourceforge.net / crypto2.htm

И вы, вероятно, хотите что-то ужасно раздражающее, например, PersistJS (http://pablotron.org/?cid=1557), чтобы попытаться сохранитьзакрытый ключ как можно дольше.

1 голос
/ 03 июня 2015

W3C API веб-криптографии может помочь. Могу ли я использовать означает, что современные браузеры теперь поддерживают его.

Для дополнительной поддержки цифровой подписи, посмотрите GlobalSign / PKI.js

PKIjs - это чистая библиотека JavaScript, реализующая форматы, которые используется в приложениях PKI (подписывание, шифрование, запросы сертификатов, OCSP и TSP запросы / ответы). Он построен на WebCrypto (веб Cryptography API) и не требует плагинов. http://pkijs.org

0 голосов
/ 10 мая 2018

Web Crypto, кажется, ответ. Вот учебник (не мой). Что касается комментария, если вы используете https, зачем вам нужна подпись - они нужны для двух разных целей. В среде infosec lingo первый дает конфиденциальность , а второй безотказность .

...