【问题标题】:Signing data with PKCS #7 (opaque) for the web使用 PKCS #7(不透明)为 web 签名数据
【发布时间】:2010-09-10 12:38:02
【问题描述】:

摘要:有没有办法通过 Firefox 插件或其他方式模拟 javascript crypto.signText 使用不透明算法而不是分离(它目前做什么?)来签署任意数据。这包括对话框和对 Firefox 证书存储的访问。另外,signText documentation 自 1998 年以来似乎没有更新过,是否有可能从那时起我的需求得到了满足而我错过了它们?

任何链接、提示等将不胜感激。


我正在做一个项目,我需要能够使用 PKCS7 (CMS) 在 firefox 中使用浏览器商店中的证书对数据进行签名。

我的第一次尝试,我认为是我的救星是 window.crypto.signText(),它完全符合我的要求(显示要签名的文本,提示选择证书并签署文本),除了它是分离且不透明(意味着签名文本不包含在消息中)。

我一直在寻找替代方案,但文档似乎很简单。我只需要使用 firefox,因此有可能为此使用插件。

如果我理解我正在正确阅读的内容 NSS(Firefox 的底层安全服务)支持 pkcs7,但它只是没有暴露给 Javascript,对吗?有没有办法通过 XPCom 做到这一点?根据我的阅读,您似乎可以访问我需要的功能like(PKCS11),但我需要的东西不可用。

我也刚刚发现支持 js c-types,所以我可以直接使用 nss lib(或者也许是 openssl)来处理签名。

这些选项中的任何一个看起来都不错,但是我在界面上输了。我很难找到有关访问证书存储或复制 signText 窗口的任何文档。

谢谢

【问题讨论】:

    标签: javascript cryptography firefox-addon pkcs#7


    【解决方案1】:

    这并不是您想要做的,但您可能需要查看名为 Forge 的开源 JavaScript 项目。它提供用于签名/验证文本等的 JavaScript。它目前被用于演示一种称为 WebID 的技术。 WebID 需要 SSL 证书——Forge 使用闪存本地存储或新的 HTML5 WebStorage 存储(连同相关的私钥)。然后在执行客户端 TLS 时使用证书。

    演示中有一个选项可以从浏览器的钥匙串导入证书,但目前它涉及手动过程(从浏览器导出为 PKCS12 并导入为 PEM)。这可能会在未来得到改进。

    无论如何,这里是 WebID 演示的 URL 和来源:

    https://webid.digitalbazaar.com/manage/

    http://github.com/digitalbazaar/forge

    该演示使用自签名证书,因此您可能会看到一个警告。如果您想详细了解 Forge 和 WebID 之间的关系:

    http://digitalbazaar.com/2010/08/07/webid/

    【讨论】:

      【解决方案2】:

      对于任何未来的搜索者,这是我当前(看似有效)的解决方案。

      首先,显然 crypto.signText 不起作用,它是分离的(因此是问题所在),最重要的是它不擅长签署二进制数据(这也是我的要求)。

      接下来的想法是使用firefox提供的扩展XPCOM api。那里有很多不错的加密货币可供使用。不幸的是,我在源代码或文档中找不到任何证据表明使用 XPCOM 接口进行签名会为我提供不透明的签名。

      所以我们似乎必须将传递的 javascript 扩展为 java。本来打算试试 JSS,后来发现其实 JSS 是不需要的,内置的加密功能就足够了。

      所以我编写了一个基于 java.security 和 sun.security(专有)的小程序。有一小段 javascript 将用户配置文件目录传递到小程序(因此我可以在用户配置文件中找到证书数据库),然后我获取私钥。数据并签署 pkcs7 附加(不透明)消息。

      有一些很棒的文档位于Here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-07
        • 1970-01-01
        • 2015-11-09
        • 1970-01-01
        相关资源
        最近更新 更多