Java 数字签名的插件替换

Java plugin replacement for digital signatures

我们有一个自定义 Java 小程序可以执行某些任务,例如从本地文件系统加载 PDF,使用系统 KeyStore/smart 卡中的证书对其进行签名等。在常规 HTML/JavaScript。现在 Java 已在浏览器中弃用,我们正在寻找替换小程序功能的可能性。

有这个Web Cryptography API, but unfortunately the spec does not cover using system keystore. There is another spec for this, WebCrypto Key Discovery,但我认为目前没有任何浏览器支持它。

Mozilla 有一个 API 可能正是我们所需要的,但不幸的是它现在已被弃用。

看来我们唯一的选择是:

或者有更好的解决办法吗?你有什么建议?我不在乎该解决方案是否仅适用于 Internet Explorer,因为我们的大多数用户都在使用。

由于 Java 对浏览器的限制,通常无法使用 OS 本机密钥库。 Java在旧版本的IE和Firefox中仍然可以使用,但是Oracle已经宣布将停止浏览器的JRE插件,Firefox决定在2017年放弃java支持,所以不推荐使用

不可能编写浏览器插件,因为浏览器不允许访问几个OS功能。特别是 Chrome 插件 API 只允许访问 Chrome OS 中的用户证书,而不是 Windows 或 Linux 中的用户证书。对于Edge,我认为插件接口还没有。

还有一些选择

  • 使用WebCryptographyApi加载软件证书。参见

  • 使用chrome消息传递api(爱沙尼亚语解决方案)。参见

  • 使用通过 javascript 连接的 本地应用程序(西班牙语解决方案)参见

我亲自测试了第一个和最后一个选项。对于爱沙尼亚语解决方案,我建议与团队联系。我认为目前只支持部分智能卡