将主题备用名称(SAN)添加到现有的证书签名请求(CSR)

任何人都可以告诉我如何将一个主题替代名称添加到现有的CSR?

我不是在谈论如何在签署时生成与SAN的CSR或添加SAN,我知道如何做这两件事情。

背景:我们遇到的问题是惠普刀片机箱允许您生成CSR,但它们只允许单个SAN。 我们不能使用别处生成的CSR,因为我们无法使用结果证书,因为没有办法(我可以find)将密钥上传到刀片机箱。

我们的CA标准stream程不允许添加SAN正在签名的时间。 他们愿意尝试,但我试图find一个解决scheme,因为这意味着我们将不必依靠他们有一个非标准的过程对我们来说 – 根据我的经验,如果他们需要使用一个非标准的过程生活最终会变得困难。 例如,当知道非标准过程的工作人员由于休假等原因不在场时

目前的方法是通过web gui连接到板载的bladechassis,并用一个CN生成CSR。

web gui只允许在CSR中使用单个SAN。

然后我们用openssl config中的以下节来自签名:

[ v3_ca ] subjectAltName = "DNS:bladesystem8,DNS:bladesystem8.services.adelaide.edu.au,DNS:bladesystem8-backup,DNS:bladesystem8-backup.services.adelaide.edu.au" 

由此产生的证书有额外的SANs。

如果您的机箱不支持添加SAN,则需要从机箱中取下钥匙,并使用openssl生成CSR。

确保req_extensions = v3_req[ req ]部分取消注释。

subjectAltName添加到[ v3_req ]部分。

生成一个新的CSR。

 openssl req -new -key extracted_c7000.key -out your_new.csr 

您不能编辑现有的CSR。

重要提示: 所有这些都是有点投机的,所以如果你深入代码,并且不同意我所说的话,请相信代码。 我不是CA专家,我只是在电视上播放。 那就是说:

作为CSR的一个特点,这将是艰难的。 以编程方式生成CSR的最后一步是对所创build的所有内容进行哈希处理,然后使用私钥对其进行签名。 因此,虽然您可以将这些属性添加到CSR的文本中,但签名与内容不匹配,因此CA不会签名。

在你的情况下,但是,你控制(或至less接触)的CA. 这给你两个select:

  1. 您可以指示CA轻松忽略CSR上的签名并发布证书。
  2. 您可以让CA颁发与请求不同的证书(例如添加属性)。

其中#1似乎是最容易的。 你需要打破OpenSSL上的防篡改密封来实现这一点,但它有一些function应该会更容易一些。 我会从asn1parse开始,它将告诉你如何分解CSR。