如何从客户端Chrome / Mozilla导入Windows OS证书库中的个人证书

时间:2017-03-21 11:43:00

标签: javascript google-chrome-extension firefox-addon ssl-certificate webcryptoapi

我已使用JavaScript库生成密钥对并使用JavaScript库WebCrypto API和第三方Web服务创建了自签名证书。现在我想将证书与私钥存储在客户端pc的Windows个人证书存储中。我发现here JavaScript 是不可能的。使用 java 很容易。但由于现在不鼓励 jApplet ,所以从客户端那里还有其他任何方式。通过创建chrome / mozilla扩展,是否可以?

请注意,我了解如果我将证书作为文件与私钥一起导出,我可以在Windows证书库中手动导入它作为个人证书。但是我希望自动完成这个过程 - 用户只需从浏览器填写表单并通过服务器通信,就会创建证书,并将存储在客户端的Windows存储区中以及私钥。

3 个答案:

答案 0 :(得分:3)

我认为你没有太多选择

  • 由于安全限制,您无法从javascript访问浏览器使用的密钥库

  • 您无法创建Chrome扩展程序来访问浏览器使用的密钥库,因为chrome API不会发布它(我不确定使用Firefox)

  • 您无法使用小程序,因为Chrome和Edge不支持Java。 Firefox将在2017年3月放弃对NPAPI插件的支持(java使用npapi),而下一个Java版本不包含浏览器插件

备选方案:

  • 使用私钥和证书(在客户端)生成.p12文件,下载并打开它。操作系统将启动导入证书工具

  • 使用WebCryptographyApi ,如果您只需要证书就可以在浏览器上执行加密操作(数字签名,加密......)。您可以稍后生成.p12

答案 1 :(得分:0)

首先,javascript在沙箱内的浏览器上运行。因此它对计算机的访问非常有限,它可以计算/生成内容,但不能对计算机进行更改。

创建扩展以添加证书是有点无用的,因为要这样做,我能想到的唯一方法是执行一个可能被用户首先执行的程序。有关从扩展程序here运行程序的详细信息。

因此,请为用户提供自动证书安装程序(创建一个)以运行它。示例c 证书存储操作的代码 here

答案 2 :(得分:0)

我们遇到了同样的问题,但仅限于Chrome。我们设法在 Firefox (javascript中的<keygen>对象)和 IExpolorer (ActiveXObject)中执行此操作。考虑 Java Applet 我建议使用 REST API 创建本地微服务器并通过SSL与其进行通信