javascript-在现代Firefox / Chrome / Edge浏览器中对PDF进行数字签名

我已经跌了几个兔子洞,寻找答案.

我有一个用AngularJS编写的Web应用程序,当前需要IE11和Acrobat插件对PDF表单进行数字签名.但是,该插件在IE11上是垃圾,现代浏览器(我将其定义为Firefox,Chrome和Edge)不支持该插件.我公司不支持Safari.)

因为应用程序是AngularJS(并且不在Node上运行),所以我需要一个JavaScript解决方案来对PDF进行签名.不仅如此,签名证书还保存在智能卡上,这意味着我需要一个可以通过某种PKCS#11接口访问证书的密码库.用Java语言编写.客户目前不接受在Acrobat中从外部打开表单.

我查看了多个库,但无法找出一个简单的答案:

> PKI.js
> pkcs11.js
> hwcrypto.js
> graphene.js

这些软件包都没有为我提供足够的信息,以了解是否需要进一步研究它们.

有人可以向我提供更多信息或方向吗?

谢谢,
杰森

最佳答案
该答案针对解决方法,而不是实际答案.

这是因为当前您可以用来获取和使用智能卡证书的私钥的浏览器中没有API.据推测,这已经在Web Crypto API中进行了讨论,据我所知-共识是出于安全原因(我完全不同意!),不应该支持此方法.

您和成百上千的其他开发人员(包括我们在内)很不走运.

第一种解决方法是在服务器上部署并从服务器运行的.NET ClickOnce桌面应用程序.该应用程序通过运行时参数获取当前用户会话的安全上下文,以便在浏览器和在浏览器旁边运行的应用程序之间共享该会话.从这个意义上说,独立运行此应用程序(在浏览器中没有会话)将在与服务器通信期间导致授权问题.

该应用程序使用服务器的API来首先检索用户将要签名的文档.然后,应用程序无限制地使用本地证书存储(因为它是常规的桌面应用程序),对文档进行加密并将其发送回服务器.

优点:可以从浏览器中调用ClickOnce应用程序.

缺点:这需要在客户端运行.NET.

第二种解决方法是在客户端计算机上独立安装Java桌面应用程序.您为选定的操作系统(例如Windows,Linux,MacOS)提供安装软件包,用户下载安装软件包并在其OS中安装应用程序.

然后,当浏览器应该在文档上签名时,您将提供一条指令,告诉用户在后台运行该应用程序.该应用程序在运行时会在本地主机和具有两个服务的固定端口上公开HTTP侦听器

>推送服务,接受要签名的文档数据
>提供签名文件(如果可用)的拉取服务

如您所料,是浏览器执行请求,浏览器向localhost:port发出请求,然后将文档数据上传到推送服务. Java应用程序从等待文档切换到签署文档状态.用户应该使用该应用程序-从商店中选择一个证书(由于是常规的Java桌面应用程序,因此没有任何限制)并签署文档.您的浏览器在后台ping该应用程序的提取服务,并在数据准备就绪后下载它.然后,浏览器使用实际的经过身份验证的会话将签名的文档上载到实际的服务器.

这里存在潜在的安全漏洞,因为任何本地应用程序或任何打开的网页都可以ping拉服务并下载文档(当然您不希望这样做).我们知道有两个解决方案.

首先,您可以在Java应用程序中拥有另一个服务,该服务返回一次性身份验证令牌(例如guid),该令牌将被读取一次,然后在每次调用pull服务时都将其作为身份验证令牌提供.如果有任何其他恶意应用程序或网页在您的应用程序网页之前读取了令牌,则您的页面将从拉取服务中获取错误(因为一次性令牌显然已被窃取并且不可用).该网页可能在此处发出通信错误信号,并警告用户潜在的安全问题.

解决漏洞的第二种方法涉及到应用程序服务器提供的pull服务调用的参数,并将该参数作为值放入页面的脚本中,该令牌由服务器的证书签名.您的Java应用程序可以具有服务器证书的公钥,以便Java应用程序能够验证自变量的签名.但是没有其他应用程序(也没有其他页面)能够伪造令牌(因为令牌的签名的私钥仅在您的服务器上可用),并且没有简单的方法可以从页面的主体中窃取有效令牌.

优点:Java应用程序可能针对多个操作系统
缺点:这仍然需要客户端上的Java运行时

两种解决方法都已在生产中进行了测试,并且都可以很好地工作多年.我希望这为您提供最终解决方案的可能方向.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


edge浏览器是Windows系统自带的浏览器工具,用户可以在上面访问网站、在线观看视频、玩网页游戏、购物等等,但是有用户打开edge浏览器出现错误提示网络链接无法加载,检查网络连接是正常的,那是哪里出现了问题?下面就和小编一起来看看具体的解决办法。
edge浏览器是Windows系统自带的浏览器,因其内存占用高,网页加载慢,支持的插件数量太少而备受诟病。微软为了推广edge浏览器,对其进行了更新和优化,可以支持海量的Chorm浏览器插件,还提供三种不同模式,基本、平衡、严格。新版Edge还能阻止有害的跟踪器获取我们的浏览数据,为我们的网络浏览提供一道保护屏障。那么我们要怎么升级edge浏览器?下面就来看看具体的操作。
edge浏览器是win10系统自带的浏览器,通常情况下打开浏览器,页面会显示百度搜索等页面,但是最近有用户发现自己打开浏览器后显示的却是“接下来做什么”,这是怎么回事?其实是电脑没有设置默认搜索引擎和主页引起的,我们只要设置浏览器的搜索引擎即可解决。
edge浏览器是现在大家经常使用的浏览器之一,我们有时候在浏览量外文网站的时候,需要使用翻译功能,但是有部分用户不知道edge浏览器翻译功能在哪。今天小编就来给大家介绍一下用edge浏览器把网页自动翻译成中文的方法。
新版edge浏览器兼容性设置在哪?在使用edge浏览器的时候经常遇到网页中一些窗口无法打开,这是由于浏览器不兼容导致的,这时就需要将浏览器调为兼容模式,这样网页使用才会没有阻碍。今天小编教大家新版edge浏览器兼容性设置的设置方法!
edge浏览器是系统自带的浏览器工具,但是很多用户都会选择第三方浏览器来使用,想要卸载掉edge浏览器,尝试了几种方法都卸载不掉,这该怎么办?针对这一问题,小编整理了两种卸载方法,帮助用户彻底卸载edge。
很多用户觉得系统自带的edge浏览器没什么用,就将其卸载了,可是卸载之后又觉得后悔,想要重装不知道怎么办了。其实方法并不难,下面小编就给大家带来两个edge浏览器卸载后了的恢复方法,一起来看看。
edge浏览器是微软自带的浏览器软件,微软为了更加符合用户的使用习惯对edge浏览器进行了较大的改进,添加了不少新功能。但是不少用户升级新版edge浏览器后发现找不到internet选项?新版edge浏览器internet选项在哪里?下面就来看看具体的步骤。
不少用户都喜欢使用Edge浏览器,但是在使用过程中难免出现一些问题,比如访问网页时突然花屏,这该怎么办?小编认为应该是开启了硬件加速模式导致的,下面就来看看详细的解决方法吧,很简单。
有用户发现电脑每次启动都会自动打开Edge栏,用起来非常不习惯,非常令人头疼,有什么办法可以取消电脑启动时自动打开Edge浏览器的Edge栏?当然是有的,下面就来看看Edge浏览器取消电脑启动时自动打开Edge栏的方法介绍。
Microsoft Edge浏览器的Edge栏可以帮助用户,无需打开完整浏览器窗口就能搜索和浏览web、查看新闻标题、检查天气等信息。但是还不少用户打不开Edge栏,其实方法很简单,下面就来看看详细的操作。
win10系统中新增了一个全新的edge浏览器,并将其设置为win10的默认浏览器,不少用户反映自己用完edge浏览器后,不知道如何关闭它?下面小编就给大家分享一下彻底关闭win10自带的edge浏览器的办法。
每次打开edge浏览器想查询专业知识时,总会看到浏览器主页飘着一些“没营养的”的新闻,看多了就觉得烦,有什么方法可以屏蔽这些新闻吗?下面小编就给大家介绍关闭edge浏览器的新闻推送的方法,简单高效。
用户通常会根据自己的喜好设置不同的搜索引擎,Edge浏览器是微软自带的浏览器工具,有用户在使用Edge浏览器时发现默认的搜索引擎是必应,用起来不是很习惯,要如何取消必应bing搜索呢?下面小编就给大家详细介绍一下Edge浏览器关闭必应搜索的方法,有需要的用户快来看看吧。
edge浏览器受到非常多用户的喜欢,在使用的时候不小心多创建了一个用户配置,要怎么删除呢?很多用户都不知道如何操作,今天小编专门为大家带来了edge删除多余用户配置的操作方法,快来瞧瞧吧。
win10edge浏览器不能下载文件怎么办?这其实是因为edge浏览器开启了SmartScreen,这会帮助用户阻止某些可能不安全的网站链接,但是也有可能误报,今天,小编给朋友们讲讲win10edge浏览器不能下载文件的解决方法,希望可以帮助到大家。
我们在使用Edge浏览器的地址栏搜索东西时,一般都会显示下拉的内容,方便用户搜索想要的东西。但是最近有用户发现地址栏不能下拉,这是怎么回事?针对这一问题,小编就给大家分享一下具体的解决办法。
Edge浏览器性能稳定、运行流畅,收到广大用户的欢迎,但是最近有小伙伴发现在浏览器中的地址栏搜索时,总会弹出一些推荐的搜索内容,看起来很不舒服,那么Edge浏览器地址栏怎么关闭搜索推荐呢?下面就来看看具体的操作。
Edge浏览器是微软的一款网页浏览工具,现在也越来越多的用户在进行使用,但是这款软件的对内存的占用率非常的高,导致使用起来不流畅,那么是什么原因导致的,要如何解答,本期的软件教程就来为广大用户们进行解答,一起来了解看看吧。
Edge浏览器是Win11系统内置的浏览软件,用户可以通过该软件进行网页浏览,简洁实用,但是最近有用户发现自己的Edge浏览器会一直无限循环打开网页,遇到这种情况应该怎么处理呢?针对这一问题,本篇带来了详细的解决方法,分享给大家。