gpt4 book ai didi

openssl - 如果私钥在HSM中如何生成证书?

转载 作者:行者123 更新时间:2023-12-02 15:47:14 30 4
gpt4 key购买 nike

我经常使用openssl来生成RSA key 和证书。但现在我遇到了一个问题。 openssl x509 -req 需要私钥作为输入。但现在我们使用 HSM 来保护私钥,我将永远无法触及私钥。这样我该如何生成 x509 证书?

最佳答案

我看到一些 HSM 附带了自己的支持程序,可用于各种用途,包括 key 生成和证书或 CSR 创建,或者使其可用(例如在供应商网站上) );你检查了吗?假设这不是一个(好的)选择:

您没有识别您的 HSM;有数千种模型,至少有数百个接口(interface),尽管很大一部分(不是几乎全部)使用“标准”(大部分)PKCS#11界面。

OpenSSL 有一个相当开放的 ENGINE API它将加密功能的一些子集(例如私钥生成、签名和解密)重定向到 OpenSSL 正常功能之外的实现(例如 HSM)。OpenSSL 附带了一些内置引擎——至少默认情况下是这样;特定的构建(例如 Linux 发行版的包)可能会省略内置引擎,在这种情况下,您可能需要进行自己的构建。其他人也可以编写引擎模块,包括但不限于特定 HSM 型号或产品线的制造商或供应商,也包括您。

  1. 如果您的 HSM 是具有内置引擎的 HSM 之一,请根据其文档根据需要配置该引擎,并使用适当的 -engine id-*engine id openssl(子)命令的选项。

请注意,req -new 仅使用-x509 生成证书,通常加上一些相关参数,并且通过这种方式生成的证书是自签名的;否则 req -new 生成一个证书签名请求 (CSR),然后您可以让 CA 将其“转换”为 CA 签名的“真实”证书(PKCS#10 CSR 本身始终 自签名)。 req 还可以生成一个新的私钥,而不是使用现有的私钥,并且这一生成可以位于引擎“内部”,从而位于 HSM 上。

  • 如果您的 HSM 没有内置引擎,但有其他方的引擎,请将其安装到您的系统中。 PKCS#11 就是这种情况。这可能需要将您的 OpenSSL 版本更改为引擎支持的版本。然后按照1:配置引擎并使用。

  • 如果您的 HSM 没有任何引擎,但其 API 提供了 OpenSSL 在引擎中所需的操作,您可以为其编写(并调试!)引擎模块。然后使用您的引擎按照 1 中的操作进行操作。还可以考虑向全世界、使用此类 HSM 的社区和/或 OpenSSL 项目提供您的引擎模块。

  • 如果您的 HSM 功能不适合引擎 API,或者不存在引擎模块并且您不想创建一个,您可以编写自己的程序,使用一些(可能是大部分)来自 openssl/apps/req.c 的代码,生成私钥和/或使用 HSM 上的现有私钥,构建证书(或 CSR)的数据结构在 OpenSSL 中以或多或少现有的方式,但随后给 X509_[REQ_]sign_ctx 一个 EVP_PKEY (OpenSSL 中用于各种类型的多态 C 数据结构)您使用自定义方法设置的非对称 key ,使用 HSM 的 API(以及 HSM 上 key 的一些标识)来进行签名。确保您的程序上的任何许可都与 OpenSSL 许可(本质上是 BSD 广告风格)兼容。

  • 关于openssl - 如果私钥在HSM中如何生成证书?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30905850/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com