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

时间:2018-05-02 15:24:06

标签: java alfresco digital-signature alfresco-share digital-certificate

我正在处理用户需要在文档上进行数字签名的项目。我在谷歌检查并了解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应用程序中

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

3 个答案:

答案 0 :(得分:4)

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

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

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

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

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

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

  4. 概念很简单(请求签名到本地应用程序的Web应用程序),但是这种类型的应用程序的构造非常复杂,因为您必须考虑许多其他因素:

    • 软件安装和分发

    • 安全和加密

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

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

    • @firma + Autofirma:西班牙公共行政部门推广和使用的开源解决方案

    • SD-DSS + nexU(lowina):欧洲委员会推广的开源解决方案。查看演示here

    • chrome token signing:Chrome和Firefox扩展程序,用于在为爱沙尼亚政府开发的网络上使用您的eID进行签名

    Sinadura也是一个开源计划,从我所看到它以类似的方式运作,但我不知道它是否有重要的参考,我还没有找到API

答案 1 :(得分:1)

Alfresco中有一些配置可以创建自定义操作。

您可以在alfresco中创建自定义操作

您可以执行java类代码以在文件上创建数字签名。

您可以从this java class

中获取参考

答案 2 :(得分:1)

很难说您提供的高级别会满足您的要求。 "数字签名"是一个非常广泛和通用的要求。法律数字签名可以像文本字段一样简单,向用户提供有关如何键入其conformed signature的具体说明。当然,您可以一直使用加密证书签署文档。

听起来您尝试过Alfresco以及可用的众多数字签名附加组件之一,但您不希望仅仅为了满足此要求而实施整个企业内容管理平台。

一个想法是查看像DocusignRightSignature这样的SaaS产品。

另一个想法是开发自己的简单服务。例如,如果您需要签名的文档是PDF,或者可以轻松转换为PDF,您可以使用类似iText PDF API的内容在服务器端的PDF文档上创建数字签名。