根据顾问的指导,我正在尝试使用 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 签名的重要知识。
您通常通过其 PKCS#11 接口访问 HSM。OpenSSL为此提供了引擎或提供程序接口。
您可以使用类似下面的方法创建自签名证书:
请注意,选项使用的值
-key
取决于您的 HSM。搜索引擎将为您提供帮助。如果您在 Linux 上运行它,您可能需要安装 OpenSSL pkcs11 引擎(
libengine-pkcs11-openssl
在 Debian/Ubuntu 和变体上)。另外,我希望您的顾问指出,OpenSSL 并非用于操作真正的认证机构。openssl -ca的手册页甚至对此有警告。除了有关数据库文件缺乏锁定的警告外,使用 OpenSSL 不会提供可审计的事件跟踪,也不会提供角色分离。这在实验室环境中没有问题,但如果您尝试创建值得信赖的 PKI 系统,则不行。