如何使用我现有的 Web 项目实现数字签名

2024-04-07

我正在开发一个项目,用户需要对文档进行数字签名。我检查了谷歌并了解 sinadura 这是一个桌面应用程序,但我需要将其调用到我的网络应用程序中。

我在 Linux 服务器上安装了 alfresco 社区版(https://www.alfresco.com/thank-you/thank-you-downloading-alfresco-community-edition https://www.alfresco.com/thank-you/thank-you-downloading-alfresco-community-edition)并按照以下 GitHub 链接的说明进行操作。

https://github.com/zylklab/alfresco-sinadura https://github.com/zylklab/alfresco-sinadura

我已经按照上述说明成功实施了。但 Alfresco 是一个大项目,并且还具有其他一些功能。但我不需要这个,我只需要在我自己的网络应用程序中实现数字签名部分,类似于 alfresco

如何在我现有的项目中实现数字签名部分?任何人都可以提出建议吗


浏览器的安全限制不允许 javascript 访问系统证书密钥库或智能卡。以前可以使用 java applet,但随着最新的浏览器更新,这不再可能。

当前浏览器中的数字签名解决方案需要在用户计算机上安装桌面软件。操作流程如下:

安装:用户在计算机上安装桌面软件。该软件安装自签名证书,并包含一个嵌入式浏览器,该浏览器侦听计算机端口并将其作为服务运行

  1. Web 应用程序使用安全 Web 连接请求本地软件签名。例如https://localhost:1234/sign?doc=xxxx.浏览器等待结果

  2. 本地应用程序收到文档后,要求用户选择证书或录入卡并进行签名。由于它是本地应用程序,因此没有安全限制

  3. Web 应用程序接收结果。它可以通过 REST 服务查询本地应用程序或打开 websocket。

这个概念很简单(向本地应用程序请求签名的 Web 应用程序),但是这种类型的应用程序的构建相当复杂,因为您必须考虑许多其他因素:

  • 软件安装和分发

  • 安全与加密

  • 数字签名格式:XAdES、CAdES、PAdES 等。它们可以在应用程序中实现,也可以分 3 个阶段使用签名服务,其中文档位于服务器上,并在本地对单个哈希进行签名

所以我建议使用现有的解决方案:

  • @firma https://administracionelectronica.gob.es/ctt/clienteafirma/descargas#.Wu_1TIhuaM8 + 奥托菲尔玛 http://firmaelectronica.gob.es/Home/Descargas.html:西班牙公共行政部门推广和使用的开源解决方案

  • SD-DSS https://github.com/esig/dss + nexU http://nowina.lu/news/nexu/(lowina):欧盟委员会推动的开源解决方案。检查演示here https://ec.europa.eu/cefdigital/DSS/webapp-demo/sign-a-document

  • Chrome 令牌签名 https://github.com/open-eid/chrome-token-signing/wiki:为爱沙尼亚政府开发的 Chrome 和 Firefox 扩展程序,用于在网络上使用您的 eID 进行签名

Sinadura也是一个开源项目,据我所知它的工作方式类似,但我不知道它是否有重要的参考资料,而且我还没有找到API

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用我现有的 Web 项目实现数字签名 的相关文章

随机推荐