如何以编程方式更改证书签名请求的主题属性?

时间:2013-10-10 14:57:24

标签: windows-phone-8 cryptography bouncycastle csr pkcs#11

我正在实施Windows MDM。在此,设备发送CSR,这是PKCS#10证书请求。

当我转到http://certlogik.com/decoder并解码此CSR时,我将主题视为 “CN = B1C43CD0-1624-5FBB-8E54-34CF17DFD3A1 \ 00”

这个“\ 00”,我们想从主题属性中删除。因此我们无法在注册期间安装公司中心应用程序。

我想将此主题更改为任何值,例如“CN = myMDM”。如何更改CSR的主题属性?

2 个答案:

答案 0 :(得分:2)

允许证书主题与PKCS#10(即CSR)的主题不同。请参阅OpenSSL的'req'命令的-subj选项。

出于这种能力背后的原因,请考虑这一点;您的CSR由您的私钥签名。签名用于验证CSR的内容未被修改(包括主题)。您的公钥包含在CSR中。 CA创建您的证书并使用它认为合适的CSR主题的任何部分。证书以及CA指定的主题和CSR中的公钥由CA的私钥签名。此签名用于验证证书的内容是否未被修改(包括CA指定的主题)。

答案 1 :(得分:0)

获得证书申请后,您无法更改,因为CSR应使用您的私钥进行签名,并且签名肯定包括主题行。

因此,如果您更改了需要辞职的任何内容,则需要您解析CSR。所以基本上你应该重建你的CSR,并在你提供你的公用名(CN)时简单地用值00(空终止符)去除字符。

您可以选择以下选项:

  • 正确生成CSR,如上所述,
  • 更改CSR,删除零值字节并重新计算所有长度,并跳过验证,
  • 创建一个特殊的证书创建者,在验证或跳过CSR的签名验证后,将正确的主题放在CSR之外;