使用智能卡或证书在浏览器中对数据进行数字签名

Pla*_*tov 18 browser digital-signature

我需要使用Web浏览器使用客户端证书(智能卡)创建一些XML数据的数字签名.通常我习惯在客户端执行java applet.在操作系统和浏览器方面,多平台的好处是多方面的.

然而,从长远来看,这种选择越来越难以实施和支持.实际上,所有浏览器都需要某种操作才能执行此类applet,现在几乎必须使用受信任证书进行代码签名,新的清单属性等等.一些额外的安全层没有任何问题,我对此感到满意.

但是谷歌浏览器2015年4月已经停止了Java小程序(和其他插件一样)的支持-有一个配置开关但表示它不会更长的时间可在这里.
Mozilla Firefox没有NPAPI的支持终止日期,但他们称之为" 遗留技术 ".
至于IE - 它不支持Modern UI中的插件.

因此,Java applet不再是一个普遍的选择,我的选择是什么?
到目前为止我调查过的内容:

  • ActiveX - 仅限IE
  • Silverlight - 根本不能访问证书,并且作为插件面临与Java相同的限制
  • 浏览器特定扩展; 例如,直到版本33的Firefox曾经有过window.crypto.signText,但现在已经没有了
  • 安装在客户端上的本地应用程序 - 不容易安装,支持,开发和更新多个操作系统及其不同版本.
  • Web Cryptography - "只有基本的加密功能",没有证书支持

我没有想法了.欢迎并赞赏所有建议.

小智 3

几周前我做了同样的研究,我的第一个选择是迁移到 Firefox(至少现在是这样)。

另一种方法是将小程序迁移到 JNLP java 客户端应用程序(可能在 java 客户端/服务器/网页之间进行一些 websocket/restful 同步)。

我认为你提到的选项在浏览器中的支持少于java applet。