gpt4 book ai didi

java - 使用 java 或 BouncyCaSTLe 生成 CSR,而不使用私钥

转载 作者:行者123 更新时间:2023-12-02 05:00:02 24 4
gpt4 key购买 nike

当在 HSM(硬件安全模块)中生成私钥/公钥对时,想要在 java 中创建 CSR 文件。

在 Bouncy CaSTLe 中尝试示例时,CSR 的生成需要私钥和公钥。由于 key 的生成发生在 HSM 中,因此我只有公钥私钥假冒对象。我可以在没有私钥的情况下用java生成CSR吗?

请找到我正在尝试的代码示例。

 KeyPair pair = generateKeyPair();
PKCS10CertificationRequestBuilder p10Builder = new JcaPKCS10CertificationRequestBuilder(
new X500Principal("CN=Requested Test Certificate"), pair.getPublic());
JcaContentSignerBuilder csBuilder = new JcaContentSignerBuilder("SHA256withRSA");
ContentSigner signer = csBuilder.build(pair.getPrivate());
PKCS10CertificationRequest csr = p10Builder.build(signer);

我对 HSM 还很陌生,任何输入或引用都会有所帮助。

最佳答案

您可以在没有私钥的情况下生成 CSR。您确实需要对私钥的引用,并且该 key 必须能够签名。对私钥的引用只是实现 PrivateKey 的类的特殊版本。它们不包含数据,仅包含引用。然而,调用 getEncoded 或检索 RSA key 的私有(private)指数(通常 - 它可能取决于 key 生成参数和 PKCS#11 中间件)会失败并出现异常。

使用这些 key 的方式是将它们提供给新生成的 Signature 实例的 init 方法。然后,Java 运行时将在正确的提供程序(适合您的 HSM 的提供程序)中搜索正确的 SignatureSpi 实现。这称为延迟提供者选择,因为它仅在调用init方法后搜索实现。当然,在您的情况下,这一切都将在 ContentSigner 的视线之外发生。

私钥数据在任何时候都不应离开您的 HSM,除非打包用于备份或在 HSM 之间共享。

关于java - 使用 java 或 BouncyCaSTLe 生成 CSR,而不使用私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28366961/

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