【发布时间】: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 和客户端证书的新手,因此我很感激有关如何实施客户端证书的任何建议。
到目前为止,我已经完成了以下工作:
使用 keygen 标签(在 Firefox 中仍然有效)生成密钥对。私钥存储在浏览器中。
使用公钥在服务器上用openssl生成证书。
通过 application/x-509-server-cert MIME 类型在用户浏览器中实现证书。 (我读过,这也不会被支持太久)
有没有办法做到这一点,这样私钥就不会离开客户端计算机,或者我应该只在服务器上生成所有内容,然后使用密码对其进行加密并将 p12 文件发送给用户并删除所有内容之后的服务器?
请帮忙!
【问题讨论】:
-
如果您正在谈论在 JavaScript 中生成客户端证书并将它们存储在浏览器中,那么我想知道您为什么要将服务器技术引入其中。特别是,我知道 node.js 会做类似的事情 - 你到底是什么意思?
-
@ArtjomB。我的错。我想在那段中说的是 node.js 不是一个选项,所以人们不会指向我,我猜
-
我正在努力实现同样的目标。我可以在服务器上生成一个 p12,但浏览器只会下载它,不会打开安装对话框。如果您仅发送签名证书而不是 PK12,并且仅当客户端上已存在私钥时,它似乎只会使用安装对话框。弃用某些密钥生成器/证书功能是有问题的。
标签: javascript php codeigniter ssl encryption