【问题标题】:Recommended way to be my own Certificate Authority成为我自己的证书颁发机构的推荐方式
【发布时间】:2017-03-22 04:47:59
【问题描述】:

我们正在创建自己的 CA,但我不确定如何正确签署 csrs。

  1. Chrome 支持 keygen HTML 标签,但不会安装下载的证书(没用)。
  2. Firefox 使用 keygen 标签,但它使用自己的存储,这意味着用户必须导出证书并将其重新导入 Windows 才能与其他浏览器一起使用。
  3. IE 需要一个特殊的仅限 MS 的 javascript 对象,但在运行 Windows 10 时,我们的客户甚至不知道如何打开 IE。
  4. Edge 不支持任何与 csr 相关的内容。

我正在考虑在服务器中生成 csr 和证书(并让用户下载 p12 或安装程序)或创建 Windows 应用程序并让用户下载它以便工作,但这当然会将他们的私钥暴露给我的应用。

你会推荐什么?

【问题讨论】:

  • 您看过 Web Crypto API 吗?它仍处于试验阶段,但可能会满足您的需求。

标签: javascript ssl csr


【解决方案1】:

似乎Keygen 标记已成为deprecated in chrome,并且没有从浏览器请求证书的标准方法。实际上 CA 需要创建自己的密钥对 + csr,例如使用 openssl,或者提供一个表单来自动生成并复制粘贴到您计算机中的文件。

不要在服务器生成证书并发送给客户端。这是一个关键和高风险的过程。如果该过程不安全,您的 CA 将无效,并且不会被认证(假设您需要它)。

选项:

  • 在客户端生成密钥对和 CSR,将 CSR 发送到服务器并接收签名证书: 您可以使用 openssl、本地应用程序、HTML 表单,或使用自动化流程WebCryptographyApi(或其他 javascript 库)

  • 在服务器中生成证书并远程使用:证书必须方便安全,主要使用 HSM(在欧盟,对于想要存储用户的可信 CA 是强制性的证书),并且证书的使用被凭据锁定。通常使用双因素身份验证。例如用户名/密码+短信

【讨论】:

  • 感谢您的回答,问题是客户端必须在 Windows 中安装证书,因此我想本地应用程序是唯一的机会。我可以用 forge.js 来做,但是没有办法安装它。
  • forge 可以在 PKCS#12 中对证书进行编码。您可以在浏览器中生成证书并下载 .p12 文件。用户可以直接在Windows中导入
猜你喜欢
  • 2010-10-20
  • 2015-08-09
  • 1970-01-01
  • 2014-12-26
  • 2015-07-31
  • 2023-01-31
  • 1970-01-01
  • 2018-06-19
相关资源
最近更新 更多