目前 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
希望这可以帮助,