【问题标题】:Sign XML document in web browser using javascript使用 javascript 在 Web 浏览器中签署 XML 文档
【发布时间】:2018-04-24 12:32:32
【问题描述】:

我想使用仅使用 JavaScript 的客户端证书签署包含 Web 浏览器中敏感数据的 XML 文档 (XMLDSig)。

我进行了研究并发现,在 2014-2015 年,不可能使用客户端证书在 JS 中签署文档。当时有三种可能:

  1. Java 小程序
  2. ActiveX 组件
  3. 网络浏览器插件(NPAPI,...)

现在有什么新的可能性吗?我们在 2018 年,我能够找到的绝大多数资源都是 3-4 年的。所以我真的很好奇是否有一个纯粹基于 Javascript 和一些行业标准的跨平台和跨浏览器的解决方案。

【问题讨论】:

  • 客户端证书将存储在哪里?
  • 证书应存储在系统或网络浏览器密钥库中。无法将加密的证书存储在光盘上。
  • 如果您使用新的 WebCryptographyApi 将证书存储在浏览器中,您将能够仅使用 javascript 进行数字签名。但是你不能使用系统密钥库(例如 Windows 密钥库)
  • 你能告诉我它是如何工作的吗?我试图挖掘一些信息,发现只提到了“WebCrypto Key Discovery”。但它看起来还没有在浏览器中实现。
  • 不考虑“密钥发现 API”。它只是访问系统证书存储库所需的服务的定义。它没有被实施。你可以找到 webcrypto 规范here。它允许使用本机 api 生成或导入密钥。它是一个低级 api:可以使用加密算法,但不能执行 XML 签名或导入 PKCS#12 文件等高级操作

标签: javascript xml-signature


【解决方案1】:

我们创建了a XMLDSIG api,您可以在浏览器中使用它在浏览器中创建 XMLDSIG 签名。

做签名你需要一个数字证书,我们通常使用我们所说的Browser Bound certificate 来做这个。本质上,我们使用 Web Crypto 创建一个证书,然后用它进行签名。

如果您需要使用在浏览器之外创建的证书,我们创建了一个名为 FortifyApp 的包,使您能够在浏览器中使用本地注册的证书和带有证书和密钥的智能卡。

或者,您可以将PKCS#12 file using PKIjs 导入浏览器,然后使用它进行签名。

上面不需要Java或ActiveX,如果需要转义浏览器,只需要Javascript和客户端。

【讨论】:

    猜你喜欢
    • 2015-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多