javascript - 如何使用浏览器中的证书私钥对文档进行签名(CAPICOM 替代方案)?

标签 javascript security certificate x509certificate capicom

因此,在 Windows 7 之前,存在一个 Microsoft ActiveX 组件:CAPICOM,可以从 Javascript 调用该组件,然后显示客户端计算机上证书存储的内容。然后,客户端可以选择适当的证书并使用证书的私钥签署某些文档。 这就是在 Javascript 中访问证书存储的方式:

var MyStore = new ActiveXObject("CAPICOM.Store");
var oCertificates = new ActiveXObject("CAPICOM.Certificates");
// attempt to open the personal certificate store   
MyStore.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY);

如今使用 CAPICOM 的替代方案是什么?我希望客户端能够在浏览器中使用他的私钥对某些文本进行签名,然后将使用公钥签名的文本发送到服务器。还有可能吗?

也许我可以使用 Java 或 Silverlight 而不是纯 JavaScript? PKI.js 和类似的怎么样?

最佳答案

一般来说,由于浏览器缺乏对 Java 或 silverlight 的支持,目前不可能

Chrome 已放弃对 NPAPI 插件的支持。 Firefox 已宣布将于 2017 年停止支持,Edge 也不支持。 Microsoft 已弃用 Silverlight,Oracle 也宣布弃用 Java 浏览器插件。只能使用旧版本的 IE。

Javascript 加密库,例如 PKI.js , forge或内置 WebCryptographyApi可用于执行数字签名,但它们无权访问操作系统 keystore ,因此您无法访问已安装的证书

替代方案(不是很令人鼓舞):

  • 使用 WebCryptographyApi 在浏览器中加载证书(不适用于智能卡)
  • 启动安装在您设备上的本地应用,并使用嵌入式 http 服务器或 Chrome 消息传递 API 通过协议(protocol)进行调用
  • 耐心等待Key Discovery Api 这将提供对 WebCrypto 的操作系统 keystore 的访问

关于javascript - 如何使用浏览器中的证书私钥对文档进行签名(CAPICOM 替代方案)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40497439/

相关文章:

java - 已签名的 Jar 和 doPrivileged 无法解决访问控制异常

powershell - 将证书从驱动程序导入到 TrustedPublisher 以进行静默驱动程序安装

javascript 在 window.open (""之后不执行)

javascript - jQuery 验证插件 : validate custom date format

javascript - 将 django 变量传递给 javascript

java - 使用 Java 读取 X.509 证书

php - 使用 PHP 和证书作为身份验证连接到 FTPS

javascript jquery查找多个隐藏输入而没有特定属性

javascript - 哈希安全漏洞 - 如何修复?

java - 如何在 Java 中创建 PKI