[英]Alternative for digital signing applet under Chrome
目前,我们已经开发了一个系统,可以使用 Java 小程序对文档进行数字签名。 然而,随着 chrome 下小程序的禁令,我们正在寻找一种替代的数字签名解决方案。
目前签署的工作方式如下:
一种替代解决方案是在浏览器中导入证书并使用 js 进行签名。 但这不会是一个用户友好的解决方案。
另一种解决方案可能是要求用户下载一个使用 JNLP 运行的程序,该程序下载并签署文档并使用 HTTP 多部分 POST 自动上传它。 这种方法的缺点是它需要额外的用户交互(下载操作),并且我们会丢失浏览器 http 会话,因此我们必须再次进行身份验证。
哪个更有活力? 你能想到替代方案吗?
以下所有帖子均建议使用基于RSA的签名。
您可以使用纯Javascript + Web加密api对其进行签名。
关键点是提取与HTML5键<file>
标签,使用伪造的js库处理密钥和散列和推崇的XML与deoxxa和使用网络加密的签名/验证(另外,锻造也可以签名/验证,但网络加密速度更快)。
如果要使用专有规范化对xml进行签名,请使用deoxxa(在使用前应先对其进行浏览器化)。 如果您对xml进行签名并需要进行标准化,请使用我的deoxxa分支 (托管在自己的gitlab服务器上)。 我才懒得重命名独家包容,但我的.js文件执行包容,相信我)使用示例forge
+ deoxxa
+ html5_p12_file_read
在signJs,verifyJs文件 。
另外,forge支持签署二进制文件(CMS或较旧的命名方式PKCS#7),但我的JSP文件没有这样的示例。 关于JS中的OCSP和链式测试-我在伪造中打开了问题 ,但是似乎很难在JS中处理CRL / OCSP和TSP协议,这就是为什么您可以登录JS,但要进行验证的原因-在JS中进行哈希检查(在我的JSP中显示伪造用法和其他代码),但是Web服务中会执行CRL,chain等智能检查,您可以提取X509Certificate并将其发送到Web服务,并使用bouncycastle或任何其他炫酷的库进行智能检查。 X509Certificate仍然是公共信息,在将其发送到服务中没有问题,但是摘要检查需要文件,您可能不希望将文件发送到服务,因此使用伪造来检查在我的verifyJS文件中显示的摘要。
我的JS代码没有重构,甚至没有在OOP中重构,目前我不在那个项目上工作,但是在某个阶段,我已经在文件系统中使用p12密钥完全使用了XML RSA siging。
我的存储库中最新的JSP仅使用伪造来解析p12文件并将其密钥提供给Web Crypto API,但我的存储库历史记录也具有纯Javascript签名/验证(如果您不喜欢Web crypto API)。 查看项目分支的历史记录。
由于对此问题的某些答案/评论期望WebCrypto API提供对本地证书存储的访问(在2016年),但是WebCrypto API不提供对本地证书存储的访问。
因此,在当前情况下,最好的选择是使用来自浏览器的Chrome扩展程序数字签名或任何其他可用的浏览器扩展程序进行数字签名。 上面的链接页面还指向3个不同的Stacks Overflow答案,以实现不同的签名任务和方案以及JavaScript源代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.