3

我已经使用 JavaScript 库WebCrypto API和使用 CSR 请求的 3rd 方 Web 服务生成了密钥对并创建了自签名证书。现在我想将带有私钥的证书存储在客户端 PC 的 Windows 个人证书存储中。我在这里发现通过JavaScript是不可能的。使用java很容易。但是由于现在不鼓励jApplet,客户端还有其他方法。通过创建 chrome/mozilla 扩展,是否有可能?

请注意,我知道如果我将证书与私钥一起导出为文件,我可以在 Windows 证书存储中手动将其导入为个人证书。但我想自动化这个过程 - 用户只需从浏览器填写表格并通过服务器通信,证书将被创建并将与私钥一起存储在客户端的 Windows 存储中。

4

3 回答 3

3

我不认为你有太多选择

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

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

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

备择方案:

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

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

于 2017-03-21T12:00:35.417 回答
0

我们遇到了同样的问题,但仅限于 chrome。我们设法在Firefox<keygen>javascript 中的对象)和IExplorer(ActiveXObject)中做到了这一点。考虑到Java Applet,我建议使用REST API创建本地微服务器并通过 SSL 与其通信

于 2017-07-13T11:39:49.720 回答
0

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

创建扩展来添加证书有点没用,因为这样做,我能想到的唯一方法是执行一个可以由用户首先执行的程序。有关从扩展程序运行程序的更多信息 。

所以给用户一个自动证书安装程序(创建一个),来运行它。此处的证书存储操作 示例 c 代码。

于 2017-03-21T12:01:26.277 回答