该解决方案可以安全地通过 webSoket 通信在网络上访问用户的私有证书吗?

2023-12-11

我们正在开发一个使用 https 协议(两种方式)的网页。

我们需要访问用户的私有证书,因为我们需要通过用户的证书来签署文档,所以我们开发了一个通过Websoket与Web进行通信的Java应用程序。

该应用程序将通过网络协议调用进行调用(与从浏览器在 Acrobat Reader 上打开 pdf 时相同)。

因此,我们必须确保我们的网络正在调用本机应用程序(仅我们的网络)。我们希望开发一个系统来确保这一点。我们的理念:

  1. 将公钥、服务器私有证书签名的令牌和对称密钥(用于加密 Websocket 通信)发送到本机应用程序。
  2. 接下来,我们将在本机应用程序中检查令牌是否可以通过服务器的 Web 服务。
  3. 之后,我们必须打开本机应用程序和网络之间的websocket,并通过这种方式发送本机应用程序签名的文档。
  4. 然后将文档发送到服务器。

这个实现安全吗?中间有一个人我们会安全吗?

关于此解决方案的任何建议都将受到欢迎,因为我没有看到任何弱点,但我不是安全专家。

我知道这个问题的其他解决方案,例如小程序、JavaFX 或 Chrome 上的本机消息,但我只想知道这些解决方案是否安全。

提前感谢大家,如果我的英语不是最好的,抱歉:P,


我看到以下问题

  1. 将公钥和服务器私有证书的签名令牌发送到本机应用程序。

您正在通过协议调用本地应用程序。例如mylocalapp://sign?securitytoken=...。您无法控制本地 PC 上安装哪个应用程序来响应mylocalapp://。浏览器会显示一个丑陋的警告,因为您正在离开安全环境。攻击者可能替换了默认应用程序,模拟流程并获取所有签名文档。

2.接下来,我们将在本机应用程序中检查令牌是否可以通过服务器的 Web 服务。

要验证服务器的身份并避免 ManInTheMiddel 附加,您还需要使用服务器证书为您的应用程序设置信任库

您的服务器还需要验证客户端的身份。您是否也计划以两种方式使用 TLS?

  1. 之后,我们必须打开本机应用程序和网络之间的websocket,并通过这种方式发送本机应用程序签名的文档。

您不需要网络套接字。只需使用 URL 连接即可下载和上传文档。


当 Chrome 决定削减 NPAPI 支持并且签名小程序开始失败时,西班牙经济部使用了该解决方案。现在,他们就这样重建了系统

  1. 在用户的 PC 上安装本地 Java 应用程序。应用程序侦听端口,例如 5678

  2. 在您的页面中,javascript 连接到表单中的应用程序http://127.0.0.1:5678/sign并发送数据进行签名。

  3. 该应用程序是本地的,并且使用操作系统密钥库(包括驱动程序 PKCS#11)没有任何问题。进行数字签名并将结果发送到服务器

  4. 页面的 javascript 定期查询结果并在准备好时检索它

安全问题基本相同,但是在本地主机中安装服务器比替换本地默认应用程序更难。

该解决方案称为@firma,我想您可能知道它。它是开源的,你可以使用它

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

该解决方案可以安全地通过 webSoket 通信在网络上访问用户的私有证书吗? 的相关文章

随机推荐

  • 现在有人可以下载 Eclipse 吗?

    我无法下载 Eclipse 这是Eclipse的问题吗 这是链接https www eclipse org downloads packages 是的 在计划内的维护中断之后 eclipse org 网站是很遗憾无法到达的到目前为止 202
  • 调用未定义的方法 Illuminate\Pagination\Paginator::make()?

    这是我的代码 use Illuminate Support Collection use Illuminate Support Facades Input use Illuminate Pagination Paginator collec
  • CakePHP - 分页和排序二级关联

    我知道这个问题已经被问了 100 000 次 但我几乎阅读了所有 100 000 条回复 但似乎没有一个符合我的要求 我已经尝试了所有可能的组合 显然没有 但我担心我会在如此相对简单的事情上失败 这是我的第二个蛋糕项目 所以我绝不是专家 简
  • 如何绘制混合箱线图:一半箱线图,另一半有抖动点?

    我正在尝试制作与图 2d f 类似的图文章发表在 自然 杂志上今年 它基本上是一半箱线图 另一半是点 有人能给我一些提示吗 非常感谢 这些是我的数据和代码 它们生成了带有点的完整框 require magrittr require tidy
  • android 媒体播放器显示音频但不显示视频

    我正在使用媒体播放器来播放视频 它只播放音频而不播放视频 有人可以帮忙吗 我的代码如下 public class VideoViewApplication extends Application Override public void o
  • WHERE-CASE 子句子查询性能

    该问题可能特定于 SQL Server 当我编写如下查询时 SELECT FROM IndustryData WHERE Date 20131231 AND ReportTypeID CASE WHEN fnQuarterDate 2013
  • XSLT :将命名空间声明添加到根元素

    我有这个 XML 文档
  • 更新 SQL Server 2012 中的 varbinary(MAX) 字段丢失最后 4 位

    最近想做一些数据修补 尝试更新一列 typevarbinary 最大 更新值是这样的 0xFFD8F 6DC0676 但是 更新查询成功运行后 该值变为 0x0FFD8 6DC067 看起来最后 4 位丢失了 或者整个值右移了一个字节 我尝
  • 如何通过脚本设置Azure DevOps版本的描述?

    在 Azure DevOps 中 我尝试通过 PowerShell CMD 设置版本描述 以便根据构建步骤中工件的输入获得版本的动态描述 我尝试通过 powershell 设置发布变量 例如 Write Host vso task setv
  • 如何让循环中的多个ajax请求按顺序返回值?

    我必须循环发出一系列 Ajax 请求 大约有100个 每个请求都会返回一个 JSONP 变量 我从 JSON 中提取数据并将值附加到 div 中 问题是我希望 div 按函数调用的顺序附加数据 即依次 现在 每次刷新页面时 我都会根据请求完
  • Dask Dataframe 将列表的列拆分为多列

    在 Pandas 中可以轻松完成相同的任务 import pandas as pd df pd DataFrame lists i i 1 for i in range 10 df left right pd DataFrame x for
  • 这个“标签”在 C++ 中意味着什么?

    我正在阅读一些 C 代码 我看到了一些有趣的东西 代码是这样的 repeat code here fallback code here start another code 这是我第一次在 C 代码中看到这种 标签 我称之为标签是因为我在汇
  • 没有显式锁定的 postgres 死锁

    我使用 PostgreSQL 9 2 并且我没有在任何地方使用显式锁定 也没有LOCK声明也不SELECT FOR UPDATE 然而 最近我得到了ERROR 40P01 deadlock detected 不过 检测到死锁的查询被包装在事
  • 如何通过ajax将表单数据发送到python脚本?

    我正在努力处理 python 程序和 ajax 请求 我正在尝试将一些数据从 Javascript 获取到 python 程序中 我一直在使用 getfirst field name 的正常方法不起作用 我认为这是因为请求是通过 ajax
  • 在离开未保存更改的网页之前警告用户

    我的申请中有一些带有表格的页面 如何保护表单 以便在有人离开或关闭浏览器选项卡时 系统应提示他们确认是否确实要保留未保存数据的表单 简短 错误的答案 你可以通过以下方式做到这一点处理beforeunload事件并返回一个非空字符串 wind
  • iOS:UITableView 滚动太快时会混合数据

    我已经对 UITableViewCell 进行了子类化以向其添加自定义外观 在 MYTableViewCell 的初始化级别 我添加了 4 个子视图 UIImageView 和三个 UILabel 所有 4 个子视图都分配有不同的标签 在
  • Google 表格的活跃用户 VS 有效用户

    我正在编写一个简单的谷歌应用程序脚本应用程序 它根据请求页面的用户执行一些数据操作 根据谷歌文档对象 Session 有获取活动用户 and 获取有效用户 我目前使用它来确定用户 看一下代码 var email Session getAct
  • 操作栏下的进度栏

    问题摘要 我怎样才能做一个ProgressBar集成在内部ActionBar 就像在 Chrome 应用程序上一样 Details 看一下 Chrome 的截图 我想创建一个像这样的操作栏 在操作栏的正下方 有一个进度条 它根据页面加载情况
  • 具有可变宽度元素的 jquery 滑块

    是否可以创建一个 jquery 滑块 其中元素具有可变宽度 即并非所有元素都具有相同的宽度 如果是这样 我该怎么做 汉尼特 要设置 jQuery 滑块的宽度 只需使用 CSS 将其包装在 div 和样式中即可 您还可以通过 CSS 引用子元
  • 该解决方案可以安全地通过 webSoket 通信在网络上访问用户的私有证书吗?

    我们正在开发一个使用 https 协议 两种方式 的网页 我们需要访问用户的私有证书 因为我们需要通过用户的证书来签署文档 所以我们开发了一个通过Websoket与Web进行通信的Java应用程序 该应用程序将通过网络协议调用进行调用 与从