3

W3C正在研究http://www.w3.org/TR/WebCryptoAPI/以定义一种从javascript生成数字签名,encrypton等的方法。基本上在DOM中的window对象中定义了一个新对象crypto,它必须提供具有签​​名和加密功能的javascript。 Chrome开始实现这个对象,该对象目前在其JavaScript引擎中可用(我认为处于测试阶段),我尝试使用它来生成一些签名,似乎正常工作,但我认为最有用的方式来生成数字签名此新对象使用OS密钥库中的私钥代替自动生成密钥材料,但此工作草案中未涵盖此访问权限。带有OS密钥库的Chrome上的js签名

我用一个签名applet来处理OS密钥库(MS,Firefox KS,MAC OS X),但是我想直接用javascript做,如果有可能避免applet最后产生的所有问题天......新的Oracle安全性重新定义,新的MANIFEST.MF属性,浏览器阻塞插件等等,这些都是真正的痛苦!

所以我在寻找一个JavaScript的方式这样做,似乎所有的主流浏览器采取自己的方式:

  • 在Internet Explorer中存在访问Windows密钥库的ActiveXObject的:

    // instantiate the CAPICOM objects 
    var store = new ActiveXObject("CAPICOM.Store"); 
    store.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY); 
    ... 
    
  • 要访问Firefox密钥库似乎Firefox添加signText方法window.crypto(关于Firefox的webCryptoAPI实施here和关于专有实施的更多信息):

    window.crypto.signText("textToSign", "ask");

编辑:这个Firefox的方法,因为版本34它是推荐使用,因为它不是一个标准:https://developer.mozilla.org/en-US/docs/Archive/Mozilla/JavaScript_crypto

但是对铬看来,目前并不存在什么可照着做。

所以任何人都知道如何在Chrome中实现这一点? 任何人都知道在所有的浏览器中这样做的常见js方法?任何建议给我正确的方向将不胜感激。

谢谢!

回答

2

您需要编写将访问MS Crypto Store并执行加密操作的活动组件。它可以是使用NativeClient SDK的Java applet或Chrome浏览器扩展。 Java applet将运行在MSIE,Firefox,Chrome和大多数其他浏览器上,但需要在客户端计算机上安装JRE(Java运行时环境)。

+0

感谢你的回答,我用applet工作了一年,每天都很难处理它产生的问题。错误,新的安全requeiments等。到目前为止,我在您评论时查看了NativeClient SDK。 +1。谢谢。 – albciff 2014-09-05 13:20:34

+0

@albciff我对Java小程序的体验**完全一样**,但我并不真正了解可以使用高级数字签名功能扩展浏览器的任何其他多平台技术。 BTW我刚刚探索了NativeClient SDK,它似乎只提供了非常有限的功能:您无法访问文件系统,也无法加载MS Crypto Store访问所需的第三方库。有关更多详细信息,请参阅[native-client-discuss邮件列表中的此线程](https://groups.google.com/forum/#!topic/native-client-discuss/C9nR--vt-Ug)。 – jariq 2014-09-05 19:44:01

+0

所以很可能我们遇到了同样的问题......我最近处理的是applets很久以来,我遇到的问题比以往任何时候都多(java口头禅:一次写入运行......不适用于与操作系统交互的applet密钥库)。我认为JavaScript是一种可能的好方法,但就目前而言,并非所有的浏览器都带有这个功能,而每个带来的浏览器都有他自己的实现。再次感谢。 – albciff 2014-09-08 08:03:18

相关问题