我正在处理用户需要在文档上进行数字签名的项目。我在谷歌上查了一下,知道 sinadura 是一个桌面应用程序,但我需要将它调用到我的 Web 应用程序中。
我在 Linux 服务器 ( https://www.alfresco.com/thank-you/thank-you-downloading-alfresco-community-edition ) 上安装了 alfresco 社区版,并按照以下 GitHub 链接中的说明进行操作。
https://github.com/zylklab/alfresco-sinadura
我已按照上述说明成功实现。但 Alfresco 是一个大项目,还提供了其他几个功能。但我不需要那个,我只需要将数字签名部分实现到我自己的 web 应用程序中,类似于 alfresco
如何在我现有的项目中实现数字签名部分?谁能给个建议
最佳答案
浏览器的安全限制不允许javascript访问系统证书 keystore 或智能卡。以前可以使用 java 小程序,但随着最新的浏览器更新,它不再可能。
浏览器中当前的数字签名解决方案需要在用户计算机上安装桌面软件。运行过程如下:
安装:用户在自己的电脑上安装桌面软件。该软件安装一个自签名证书并包含一个嵌入式浏览器,该浏览器监听计算机端口并将其作为服务运行
Web 应用程序使用安全的 Web 连接请求本地软件的签名。例如
https://localhost:1234/sign?doc=xxxx.
浏览器等待结果本地应用程序收到文档,要求用户选择证书或输入卡并进行签名。由于是本地应用,没有安全限制
Web 应用程序接收结果。它可以通过 REST 服务或打开 websocket 查询本地应用程序。
这个概念很简单(向本地应用程序请求签名的网络应用程序),但是这种类型的应用程序的构造相当复杂,因为您必须考虑许多其他因素:
软件安装与分发
安全和加密
数字签名格式:XAdES、CAdES、PAdES 等。它们可以在应用程序中实现或分 3 个阶段使用签名服务,其中文档在服务器上,单个哈希在本地签名
所以我建议使用现有的解决方案:
chrome token signing : Chrome 和 Firefox 扩展,用于在为爱沙尼亚政府开发的网络上使用您的 eID 进行签名
Sinadura 也是一个开源项目,据我所知,它的工作方式类似,但我不知道它是否有重要的引用资料,我也没有找到 API
关于java - 如何使用我现有的 Web 项目实现数字签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50138232/