使用从HSM导出的公钥创建证书和CSR

问题描述 投票:0回答:1

根据顾问的一些指导,我正在尝试使用 HSM 实施 PKI。 我已在 HSM 内成功创建了一个非对称对,并将公钥导出到文件中。

从那里我应该使用此公钥创建一个证书和 CSR,我将其提交回我的 HSM 以使用密封的私钥进行签名。 这就是我被困住的地方。

最好使用 OpenSSL,我该如何实现这一点? 我已经完成了“openssl req”和“openssl x509”命令,但我似乎无法弄清楚如何最终生成与此公钥相关的任何证书或 CSR。

openssl-x509 -new -force_pubkey 看起来很有希望制作证书,但该命令需要私钥,这对我来说没有意义。 用于签名的私钥被锁定在 HSM 中以供稍后签名。

openssl-req 是我最终创建 CSR 所需的内容,但此 API 中没有任何内容可以将此现有公钥或证书与请求相关联。

我觉得我要么遇到了 OpenSSL CLI 的一些限制,要么我缺乏一些关于如何将 CSR 拼凑在一起以供 HSM 签名的主要知识。

openssl pki hardware-security-module
1个回答
0
投票

您通常通过 PKCS#11 接口访问 HSM。 OpenSSL 为此提供了 engineprovider 接口。

您可以使用类似以下内容来创建自签名证书:

$ openssl req -new -x509 -days 365 -subj '/CN=My CA/' -sha256 -config
   engine.conf -engine pkcs11 -keyform engine -key slot_0-label_my_key
   -out cert.pem

请注意,

-key
选项使用的值取决于您的 HSM。 搜索引擎将为您提供帮助。

如果您在 Linux 上运行此程序,您可能需要安装 OpenSSL pkcs11 引擎(Debian/Ubuntu 及其变体上的

libengine-pkcs11-openssl
)。


顺便说一句,我希望您的顾问指出 OpenSSL 并不适合运营真正的证书颁发机构。 openssl-ca 的手册页甚至有这样的警告。除了有关数据库文件缺乏锁定的警告之外,使用 OpenSSL 不提供可审计的事件跟踪,也不提供角色分离。 这在实验室环境中没问题,但如果您尝试创建值得信赖的 PKI 系统,则不然。

© www.soinside.com 2019 - 2024. All rights reserved.