我可以使用 HSM 生成 CSR 吗?如果可以,请指导我们。这将非常有帮助。
以下是我们的系统详细信息:
- 我们有HSM(SafeNet)模拟器来测试开发应用程序。
- 我们正在使用基于桌面的应用程序 Cryptoki.dll 来执行加密操作。
现在我们想知道 HSM 是否可以生成 CSR?如果可以,那么如何生成?
答案1
我做了研究并关注PKCS #11OASIS文档标准:
http://docs.oasis-open.org/pkcs11/pkcs11-base/v2.40/os/pkcs11-base-v2.40-os.html
最后,我可以管理证书请求(企业社会责任) 来自 HSM。
以下是实现相同目标的步骤:
- 生成密钥对(私人、公共)
- 派生密钥(C_DeriveKey)从公钥并赋予以下属性:
- 机制 -ENCODE_PKCS_10(证书请求)
- 签名密钥(私钥)
- 签名机制 -SHA1_RSA_PKCS
答案2
答案3
- 在 HSM 中生成带有公钥和私钥标签的 RSA 密钥对。
- 取出 HSM 公钥。将 HSM 公钥转换为基于 Java 的公钥,并加上模数和公开指数(使用 RSAPublicKeySpec 类)
- 使用主题和公钥创建CertificateRequestInfo(步骤2)
- 使用 HSM 中的私钥对步骤 3 的数据进行签名(使用私钥标签和 findObject 来定位私钥)
- 使用算法、签名(步骤 4)和 CertificationRequestInfo(步骤 3)计算 CertificationRequestValue
- 将步骤 5 的结果编码为 Base64,并添加“-----BEGIN NEW CERTIFICATE REQUEST-----”和“-----END NEW CERTIFICATE REQUEST-----”
我按照这里的代码操作-https://gist.github.com/dopoljak/e7550dd0c01a3438c24c并根据我的要求进行了修改。
感谢 Domagoj Poljak!!
干杯