首页 > 解决方案 > 是否可以部分生成 CSR?直到在一台计算机上散列并在其他地方使用私钥签名的步骤?

问题描述

我正在使用充气城堡库来生成证书签名请求,但我使用的不是它们提供的密钥对生成器功能,而是我生成的知道模数和指数的公钥。现在我只想对详细信息进行哈希处理,然后发送到另一台具有私钥对其进行签名的服务器。私钥不会离开该服务器。是否可以在充气城堡或任何其他图书馆这样做?我已经在命令中检查了充气城堡哈希和 CSR 签名,是否可以将这两个命令分开?

这是具有已知模数和指数的公钥生成

这是从用户详细信息创建 csr 的 createCSR 函数

这是一个有趣的调用,它返回一个字符串给 X500 原理函数

标签: javacryptographyrsabouncycastlecsr

解决方案


一般来说,不,至少在没有黑客攻击的情况下不会。

原则上当然可以这样做。例如,您可以简单地使用以下方式发送结构CertificationRequestInfo

https://github.com/bcgit/bc-java/blob/master/core/src/main/java/org/bouncycastle/asn1/pkcs/CertificationRequestInfo.java

这基本上是没有签名的 CSR。然后,您可以从 Bouncy Castle 解除签名程序并实施该部分。但是,这不是一个已经标准化为单独使用的结构,因此默认情况下软件不知道如何处理它。通常,CSR 总是在私钥所在的位置生成。

当然还有其他选择(或黑客):

  • 在私钥位置实现 CSR 创建服务;
  • 使用临时密钥对请求进行签名,替换 CSR 的公钥并在私钥所在的位置重新签名请求。

当然,这些选项的问题是您仍然需要在私钥的位置做大量工作,这可能使它们几乎无用。


推荐阅读