如何使用来自浏览器的证书私钥对文档进行签名(CAPICOM替代方案)
How to sign the document with a certificate's private key from the browser (CAPICOM alternative)?
所以,在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? pk .js和类似的呢?
一般来说,目前是不可能的由于浏览器缺乏对Java或silverlight的支持。
Chrome已经不再支持NPAPI插件。Firefox已经宣布将在2017年停止使用Edge浏览器,Edge浏览器也不支持。微软已经弃用了Silverlight, Oracle也宣布弃用Java浏览器插件。只能使用旧版本的IE。
Javascript加密库,如PKI.js, forge或内置的WebCryptographyApi可用于执行数字签名,但是它们无法访问操作系统密钥库,因此您无法访问已安装的证书
替代方案(不太令人鼓舞):
- 使用WebCryptographyApi在浏览器中加载证书(不用于智能卡)
- 启动本地应用程序安装在您的设备上,并通过协议调用,使用嵌入式http服务器或chrome消息传递api
- 耐心等待密钥发现Api,它将为WebCrypto 提供访问操作系统密钥库的权限
事实上,我已经创建了一个。net ActiveX对象,并使用X509Certificate2UI
类和来自同一名称空间的其他类来显示有关证书的信息并签署一些数据。
优点:不需要使用CAPICOM
Cons:它仍然是ActiveX组件,因此只能在Internet Explorer中使用。
但这对我的客户来说是可以的,所以我选择了这条路。
- 轻量级zxcvbn替代方案
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- ng映射方向备选方案
- 为什么$.brower被弃用?还有什么更好的替代方案
- 执行php函数的onclick事件的其他替代方案
- Android上URL方案的替代方案
- :not选择器不适用于ul类-备选方案
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- iPad虚拟键盘-哪一个-javasctript解决方案
- jqlite中.first()的替代方案
- AJAX HTTP基本身份验证解决方案
- 在chrome web商店中打开时,是否有允许执行内容/后台脚本的解决方案
- Chart.js-添加渐变而不是纯色-实现解决方案
- learnyounode杂耍异步解决方案不工作
- 想在jquery中设计一个配色方案
- 在lodash上有没有一个替代方案.merge.apply(_,x);其中x是对象的数组
- 了解因子分解解决方案
- 在Javascript中使用eval的替代方案
- 提交表单后的最佳解决方案
- 如何使用来自浏览器的证书私钥对文档进行签名(CAPICOM替代方案)