当前位置: 首页 > 面试题库 >

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

章晗日
2023-03-14
问题内容

我正在研究用户需要在文档上进行数字签名的项目。我检查了google,并了解了sinadura,这是一个桌面应用程序,但是我需要将其调用到我的Web应用程序中。

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

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

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

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


问题答案:

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

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

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

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

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

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

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

  • 软件安装和分发

  • 安全与加密

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

因此,我建议使用现有解决方案:

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

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

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

Sinadura也是一个开放源代码的计划,从我所看到的看,它以类似的方式起作用,但是我不知道它是否有重要的参考资料,并且我还没有找到API



 类似资料:
  • 问题内容: 我当前正在使用Xcode 6 beta 7,并在创建项目后决定需要CoreData。我已经看过一些已经问到目标C的问题,同时还观看了有关该主题的视频,但我似乎遇到了同样的错误。至于我对CoreData框架本身的用法,我很确定它是正确的,因为我创建了另一个空项目(选中了CoreData框),并且遵循相同的实现,它像一个魅力一样起作用,但是我可能有问题也在那里做。因此,这是我在Swift的

  • 本文向大家介绍如何实施区块链项目?相关面试题,主要包含被问及如何实施区块链项目?时的应答技巧和注意事项,需要的朋友参考一下 回答:**请按照以下步骤实施区块链项目。 选择你的平台 初始化区块链 选择正确的共识协议 执行您的第一个智能合约 调试和扩展

  • 问题内容: 我有一个tomcat 7安装程序,上面部署了oldApp.war和newApp.war。这两个应用程序为数据库上的用户共享相同的登录凭据。 我可以分别使用和访问应用程序。 我的oldApp是一个Spring MVC Java应用程序,当用户登录到oldApp时,我想要一个链接,该链接会将用户带到newApp中,而无需输入登录凭据。 我想知道如何实施SSO。我最好不要运行任何外部服务来处

  • 我想要这样的东西- 用户将访问我的网页(aspx页面)上的表单并填写表单。(这是一个小表单,有四个可供输入的文本框)。 用户将在其PC(客户端计算机)中插入其数字签名etoken。 我的java applet将使用客户端的eToken中存在的客户端数字签名的私钥对表单上输入的数据进行签名(如果可能,可以生成该数据的哈希)。 并将签名数据发送到服务器 我刚来爪哇。如果可能,请分享一些代码...(服务

  • 我正在尝试在使用用Python编写的套接字服务器与使用Flutter Web制作的客户端之间建立连接。 我测试了各种套接字包,如adhara_socket_io和flutter_socket_io,但都不起作用。我在Android上尝试了相同的代码片段,但它们也不起作用。 我继续搜索,找到了这个代码片段。它使用包中的类。 这个连接到Python服务器,并从Android发送数据,但当我从Web测试

  • 本文向大家介绍Docker部署web项目的实现,包括了Docker部署web项目的实现的使用技巧和注意事项,需要的朋友参考一下 上一篇已经安装好docker服务,下面继续介绍如何部署web项目 一:随便创建目录dock,准备好如下文件: 二、编写Dockerfile,通过它能快速地构建docker镜像 新增如下配置 解释: (1)FROM centos 表示从docker官方仓库中获取centos