如何使用我现有的 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 项目实现数字签名 的相关文章

  • 相当于 java PBKDF2WithHmacSHA1 的 Python

    我的任务是构建一个 API 的使用者 该 API 需要带有 UNIX 时间种子值的加密令牌 我看到的示例是使用我不熟悉的 Java 实现的 在阅读文档和其他堆栈文章后一直无法找到解决方案 使用javax crypto SecretKey j
  • Java 7u51/7u55 带星号的清单变量

    我正在部署一个小程序 其中包含清单中的下一个变量 Manifest Version 2 0 Ant Version Apache Ant 1 8 2 Trusted Library true Permissions all permissi
  • 从 Eclipse 导出后,WAR 文件中缺少一些必要的库 - 为什么?

    我接手了一个大学的项目 其中包含一些 Web 服务 通过将项目导出为 WAR 文件 一些库包含在文件中 例如 Axis2 而另一些则不包含 hibernate JDBC 驱动程序 另外 添加到类路径中的 jar 尚未导出 所有库都位于硬盘驱
  • selenium 2.0 中的 isElementPresent

    大家好 我正在使用 webdriver 所以如果我想使用 selenium s rc 函数 isElementPresent 我必须模拟 selenium rc 所以我会执行以下操作 import org openqa selenium B
  • Mediaplayer 播放几次后停止播放

    我有一个按钮 按下它会播放一个随机声音剪辑 然后播放另一个声音剪辑 然后通过一个媒体播放器播放另一个声音剪辑 但是多次按下该按钮 15 20 次 后 所有音频都会停止 我在播放最后一个音频剪辑后释放媒体播放器 所以我不认为这是原因 有什么指
  • 如何在android中使用retrofit访问404错误?

    我正在使用改造 2 访问 REST API 以使用原始正文插入 JSON 数据 我从服务器获得成功响应 但在响应时收到 404 错误 我想访问404错误请帮我解决这个问题 ApiUtil getServiceClass sendFinalC
  • Java:等于和==

    让我们看看我们有 2 个对用户定义类实例的引用 即 Java 中的 a 和 b 会不会有一种情况 a b 但 a equals b 返回 false 当然 实施 equals 完全取决于班级 所以我可以写 class Foo public
  • 我从 String placeName = placeText.getText().toString(); 收到空指针异常

    您好 想从编辑文本中获取地名并在地图上标记 这是我的代码 其中出现空指针异常 请帮助我应该做什么以及哪里出错了 因为我从对话框中的编辑文本字段获取地名 View layout View inflate this R layout alert
  • grails 中的 log4j:如何登录文件?

    我的 grails config groovy 中有这个 log4j 配置 log4j error org codehaus groovy grails web servlet controllers org codehaus groovy
  • 使用 Microsoft REST API - Java 将 Xbox-Live GamerTag 转换为 XUID

    我有一个 Java 应用程序 它需要能够获取用户输入的 Minecraft Bedrock Edition 玩家标签 并将其转换为给定帐户的 XUID 以便我可以将其存储起来以供稍后列入白名单和参考目的 我一直在浏览 Microsoft R
  • Map:为 Integer 和 Double 类型定义方法,但不为 String 类型定义方法

    我正在尝试定义一个方法putIfGreaterThan 为了我的新Map class 给定一个键 仅当新值大于旧值时 它才会用新值替换旧值 我知道我可以通过组合来实现这一点 通过有一个private final Map
  • Java:从 ScriptEngine javascript 返回一个对象

    我正在尝试使用 Java 来评估 javascript脚本引擎 https docs oracle com javase 7 docs api javax script ScriptEngine html班级 这是我正在尝试做的事情的一个简
  • 从侦听器中修改 JFrame [重复]

    这个问题在这里已经有答案了 可能的重复 如何在框架可见后调用 setUndecorated https stackoverflow com questions 875132 how to call setundecorated after
  • 有没有办法删除 JShell 中的导入?

    我正在发现 JShell 并且发现默认添加的导入 jshell gt imports import java io import java math import java net import java nio file import j
  • Unix 纪元时间转 Java Date 对象

    我有一个包含以下内容的字符串UNIX 纪元时间 https en wikipedia org wiki Unix time 我需要将其转换为 Java Date 对象 String date 1081157732 DateFormat df
  • 运行 Espresso 测试时在 Android studio 中找不到属性 android:forceQueryable

    我已经使用 android studio 录制了我的 Android 应用程序 Espresso 测试记录浓缩咖啡测试选项中Run菜单 在记录的最后 我用自己的文件名保存了测试 单击保存按钮后 IDE 会自动在以下位置创建文件Android
  • 隐藏 JTable 临时列

    我正在使用 JTable 显示数据库中的数据 现在我想通过 Jcombobox 过滤我的 jtable 我正在使用 Jcombo 框 其中包含 030 024 045 等值 这些值已在 jtable 中设置为列标题 当我单击组合时 选定的列
  • Bipush 在 JVM 中如何工作?

    我知道 iload 接受整数 1 到 5 但是如何使用 bipush 指令扩展到更高的数字 特定整数如何与字节码一起存储 有几种不同的指令可用于推送整数常量 最小的是iconst 指令 这些只是一个字节 因为该值是在操作码本身中编码的 ic
  • 在edittext android中插入imageview

    我想将 imageview 放在 edittext 中 可能吗 我检查了 evernote 应用程序 它能够将照片放在编辑文本部分 我想让我的应用程序完全相同 我如何才能将从图库中选择的图像视图放入编辑文本中 我首先尝试将 imagevie
  • RetentionPolicy CLASS 与 RUNTIME

    两者之间有什么实际区别RetentionPolicy CLASS and RetentionPolicy RUNTIME 看起来两者都被记录到字节码中 并且无论如何都可以在运行时访问 无论如何 两者都可以在运行时访问 那不是那个javado

随机推荐