15

我有一个 Web 服务器,它只允许使用 X509 身份验证进行访问。奇迹般有效。现在我想将 X509 证书(存储在用户的浏览器密钥库中)的使用扩展到

  • 在将数据发送到服务器之前对数据进行签名(使用 JavaScript 和 HTTPPost)
  • 解密从服务器读取的数据(使用存储在那里的用户公钥对其进行加密)

我发现这个例子做的RSA 签名非常接近......只有它确实从 HTML 文本区域获取密钥。我想从密钥库中读取它。现在加密货币非常不稳定:

我正在寻找一些签名和加密的工作示例(我有一些在 Java 中,但不是基于浏览器的 JavaScript)。

非常感谢帮助

4

3 回答 3

16

目前 W3C 的 WebCrypto 标准正在指定一个crypto内部的 javascript 对象来使用 javascriptwindow执行加密、数字签名、生成密钥等。但是,没有定义访问本地密钥库以执行诸如使用客户端密钥签名之类的操作的标准方法。所以现在在javascript中没有一种通用的方法,每个浏览器都有自己的方法;在 IE 中,您可以ActiveXObject("CAPICOM.Store");使用 firefox 来做到这一点window.crypto.signText("textToSign", "ask");(似乎现在它已被弃用,请看这里,实际的 api 似乎不支持它:这里有更多信息),对于 chrome 我不确定但是使用NativeSDK Client可以成为一种可能的方式。

其他可能性也是使用 Java 小程序来解决该技术目前存在的所有问题。

github上还有一个项目,它在javascript中封装了使用具有这两种实现的公共对象签名的行为(仅使用IE和firefox),我在几个月前尝试过它并在IE / Firefox上正常工作,现在使用firefox没有' t 工作,因为 api 选项已被弃用,如果你好奇看看:Glamdring/js-signer

您还可以查看我提出类似问题的问题:js signature on chrome with OS keystore

希望这可以帮助,

于 2014-11-04T10:21:59.137 回答
2

无法在浏览器中访问“本地密钥库”。浏览器会慢慢删除对破坏浏览器实施的同源策略的事物的访问。这包括插件、keygen 标签等。

PKIjs 在构建时考虑了同源策略 PKI,这是我在该主题上所做的一篇文章 - https://unmitigatedrisk.com/?p=503

于 2015-10-20T05:43:10.447 回答
1

GlobalSign/PKI.js支持 X.509 证书。

公钥基础设施 (PKI) 是当今如何在 Web 上执行身份和密钥管理的基础。PKIjs 是一个纯 JavaScript 库,实现了 PKI 应用程序中使用的格式。它建立在 WebCrypto(Web Cryptography API)之上,并希望能够在没有插件的情况下构建利用 X.509 和 Web 上相关格式的原生 Web 应用程序。

于 2015-06-03T15:14:57.890 回答