我正在开发用户需要在文档上进行数字签名的项目.我在谷歌检查并了解sinadura这是一个桌面应用程序,但我需要调用它到我的Web应用程序.
我在Linux服务器(https://www.alfresco.com/thank-you/thank-you-downloading-alfresco-community-edition)上安装了alfresco社区版,并按照GitHub链接下面的说明进行操作.
https://github.com/zylklab/alfresco-sinadura
我已成功实施上述说明.但Alfresco是一个大项目,并提供了其他一些功能.但我不需要那个,我只需要将数字签名部分实现到我自己的类似于alfresco的Web应用程序中
如何在我现有的项目中实现数字签名部分?任何人都可以提出建议
解决方法:
浏览器的安全限制不允许javascript访问系统证书密钥库或智能卡.以前可以使用java applet,但是使用最新的浏览器更新它不再可能.
当前的浏览器中的数字签名解决方案需要在用户的计算机上安装桌面软件.操作流程如下:
安装:用户在其计算机上安装桌面软件.该软件安装自签名证书,并包含一个嵌入式浏览器,用于侦听计算机端口并将其作为服务运行
> Web应用程序使用安全Web连接向本地软件请求签名.例如https:// localhost:1234 / sign?doc = xxxx.浏览器等待结果
>本地应用程序接收文档,要求用户选择证书或输入卡并签名.由于它是本地应用程序,因此没有安全限制
> Web应用程序接收结果.它可以通过REST服务查询本地应用程序或打开websocket.
概念很简单(请求签名到本地应用程序的Web应用程序),但是这种类型的应用程序的构造非常复杂,因为您必须考虑许多其他因素:
>软件安装和分发
>安全和加密
>数字签名格式:XAdES,CAdES,PAdES等.它们可以在应用程序中实现,也可以分三个阶段使用签名服务,文档在服务器上,本地签名一个哈希
所以我建议使用现有的解决方案:
> @firma Autofirma:西班牙公共管理部门推广和使用的开源解决方案
> SD-DSS nexU(lowina):由欧洲委员会推动的开源解决方案.查看演示here
> chrome token signing:Chrome和Firefox扩展程序,用于在爱沙尼亚*开发的网络上使用您的eID进行签名
Sinadura也是一个开源计划,从我看到它以类似的方式工作,但我不知道它是否有重要的参考,我还没有找到API