【问题标题】:html keygen alternative, generating key pair in browserhtml keygen 替代,在浏览器中生成密钥对
【发布时间】:2016-07-20 22:37:53
【问题描述】:

我需要一个用于通过客户端证书进行身份验证的 html 标签 keygen 的替代品。到目前为止,我只发现过时的 js 库,例如不再维护的 jcryption 或 pidCrypt。有没有办法在客户端生成 rsa 密钥对并将私钥存储在浏览器密钥库中,至少跨 chrome、safari 和 firefox。

我知道 node.js 做了类似的事情,但我有一个相当大的应用程序,它已经用 codeigniter 用 php 编写,我认为你不能只实现一些加密库。另外据我所知,node.js 有一个在服务器上使用 openssl 的 c/c++ 后端,所以它不是在客户端上生成的。

我是 SSL 和客户端证书的新手,因此我很感激有关如何实施客户端证书的任何建议。

到目前为止,我已经完成了以下工作:

  1. 使用 keygen 标签(在 Firefox 中仍然有效)生成密钥对。私钥存储在浏览器中。

  2. 使用公钥在服务器上用openssl生成证书。

  3. 通过 application/x-509-server-cert MIME 类型在用户浏览器中实现证书。 (我读过,这也不会被支持太久)

有没有办法做到这一点,这样私钥就不会离开客户端计算机,或者我应该只在服务器上生成所有内容,然后使用密码对其进行加密并将 p12 文件发送给用户并删除所有内容之后的服务器?

请帮忙!

【问题讨论】:

  • 如果您正在谈论在 JavaScript 中生成客户端证书并将它们存储在浏览器中,那么我想知道您为什么要将服务器技术引入其中。特别是,我知道 node.js 会做类似的事情 - 你到底是什么意思?
  • @ArtjomB。我的错。我想在那段中说的是 node.js 不是一个选项,所以人们不会指向我,我猜
  • 我正在努力实现同样的目标。我可以在服务器上生成一个 p12,但浏览器只会下载它,不会打开安装对话框。如果您仅发送签名证书而不是 PK12,并且仅当客户端上已存在私钥时,它似乎只会使用安装对话框。弃用某些密钥生成器/证书功能是有问题的。

标签: javascript php codeigniter ssl encryption


【解决方案1】:

最近,我在寻找类似的库,并找到了一个流行的库,即 node-forge。这个库的每周下载量超过 400 万,并且已经存在了 7 年。此外,它还定期更新,可以通过他们的版本发布来检查。

【讨论】:

    【解决方案2】:

    如果您已经有了基于 <keygen> 的设置并想继续使用它,我创建了一个项目,尝试为 <keygen> 实现 JavaScript 填充:

    https://github.com/CyberShadow/keygen.js

    【讨论】:

      猜你喜欢
      • 2020-08-06
      • 1970-01-01
      • 1970-01-01
      • 2021-09-10
      • 2014-10-22
      • 2013-09-02
      • 2011-04-25
      • 2022-01-23
      • 2019-07-02
      相关资源
      最近更新 更多