基于Javascript的数字签名

基于Javascript的数字签名,javascript,internet-explorer,applet,digital-signature,microsoft-edge,Javascript,Internet Explorer,Applet,Digital Signature,Microsoft Edge,所以我被这个问题困住了: IE Edge不再允许小程序、activeX等, 我有一个用于数字签名的小程序 其思想是从客户端的密钥文件中提取私钥,这样私钥就不会离开客户端的计算机,这是安全性的一个要求,无法避免:( 我正在寻找API或框架,但我找不到解决这个问题的方法 在示例中,我使用PEM文件,但我的用户有.CER+.KEY+密码,在java中我可以这样做,但我需要在javascript或客户端的某些东西中这样做 而且,阅读和我发现的一些,他们生成了新的私钥和公钥进行签名,但他们从未读取过现有的

所以我被这个问题困住了:

IE Edge不再允许小程序、activeX等, 我有一个用于数字签名的小程序

其思想是从客户端的密钥文件中提取私钥,这样私钥就不会离开客户端的计算机,这是安全性的一个要求,无法避免:(

我正在寻找API或框架,但我找不到解决这个问题的方法

在示例中,我使用PEM文件,但我的用户有.CER+.KEY+密码,在java中我可以这样做,但我需要在javascript或客户端的某些东西中这样做

而且,阅读和我发现的一些,他们生成了新的私钥和公钥进行签名,但他们从未读取过现有的证书

有谁有这个问题或者知道我可以使用的框架吗?
请注意!

您不必强制您的web应用在Edge中工作,因为它不再支持您的web应用正在使用的传统技术

“与Microsoft Edge一起使用企业模式打开Internet Explorer 11 适用于需要IE专有技术的企业网站。”

将您的站点包括在企业模式站点列表中,以便在IE11中自动打开:

一旦Edge检测到您的web应用程序正在使用专有技术,它将告诉您在IE11中打开您的站点

这些步骤和详细信息可在Microsoft Edge团队的这篇博客文章中找到,并查看博客的用户体验部分,以便您了解一旦实施,它将为您的用户带来的用户体验:


所以答案是在github发布的示例中使用JSRSASIGN(),它使用PEM文件,我构建了一个使用CER+密钥+密码>>的示例


对于那个特定的示例,我使用sparkMD5()计算文件的散列。

现代浏览器不再支持ActiveX、小程序。WebCryptoAPI动态生成并使用密钥,但无法从证书存储访问证书

Alfredo M(他也提出了这个问题)提供的公认答案指出,JavaScript可以在浏览器中处理加密,而不是访问本地证书存储。最近,证书不是作为pfx(或PEM)文件生成/颁发的,而是在加密设备(如USB令牌或智能卡)上生成/颁发的


因此,我们需要为现代浏览器使用浏览器扩展,在浏览器后面运行的应用程序可以访问证书存储并对哈希进行签名。我公司免费提供了一个。您只需要几行JavaScript代码就可以调用任何浏览器扩展提供的方法,从而从现代浏览器实现数字签名。如果如果您只想对文件或eReturns进行签名,您不需要任何服务器端组件。如果您想对pdf进行签名,您可能需要在服务器端使用pdf组件。

因此,如果我理解正确,您有一个小程序,它已经在IE中工作,但在Edge上不工作,这就是您尝试使用新API复制同一进程的原因(或任何可用的API)?是的,这就是问题所在@RomanCanlas另一个问题-您的web应用程序是面向公众的还是仅在您的组织内?主要是针对私有内部网@RomanCanlas