从浏览器中生成客户端 SSL/TLS 证书

从浏览器中生成客户端 SSL/TLS 证书

CACert 和 MyOpenID 都这样做:它们有一个表单,提交后将导致浏览器生成密钥并发送公共部分进行签名,然后将包含该公钥的签名证书传回,浏览器会将该公钥绑定在其密钥库中并在将来用于身份验证。我知道如何使用 SSLVerify 和类似工具在用户拥有客户端证书后对其进行验证,并且我知道如何通常使用 openssl 命令行工具生成 CA 和客户端证书,但不知道如何进行浏览器交互来生成密钥等。

如果有帮助的话我可能会使用 Apache 和 Ruby/Rack 或 PHP :)

答案1

您正在寻找keygen 标签。 看Mozilla 的页面

你最好让扩展数据库连接协议这样做是因为它通过使用它的外部 ra 组件(我做到了:))。

实质上,构建两个 ejbca 实例。一个实例充当安全网络背后的 ca。另一个实例作为前端 ra,用于注册用户。ca 通过查询 ra 的 MySQL 数据库(externalra.properties 配置文件)轮询 ra,挑选任何未完成的 CSR,对其进行签名,然后发回证书。

要注册用户,请执行以下操作:

  • 您必须在 ca 端(称为最终实体)预先创建用户。这意味着您必须创建 ca、caprofile 等
  • 使用最终实体凭证登录 externalra 接口并提交表单。
  • 客户端的浏览器将开始显示忙碌图标。
  • CSR 到达 ra db,然后等待 ca 接收 csr 并返回证书。一旦证书到达 ra db,就会呈现给用户。

这是一个简单的 ejbca我使用的构建脚本。它不会立即起作用,但应该可以。更新:另请参阅此问题此链接用于 Apache 中的客户端证书使用

相关内容