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

Windows phone 8 如何以编程方式更改证书签名请求的主题属性?,windows-phone-8,cryptography,bouncycastle,csr,pkcs#11,Windows Phone 8,Cryptography,Bouncycastle,Csr,Pkcs#11,我正在实现Windows MDM。在这种情况下,设备发送CSR,即PKCS#10证书请求 当我去解码这个CSR时,我得到的主题是 “CN=B1C43CD0-1624-5FBB-8E54-34CF17DFD3A1\00” 此“\00”,我们要从subject属性中删除。因此,我们无法在注册期间安装company hub应用程序 我想将此主题更改为任何值,例如“CN=myMDM”。如何更改CSR的主题属性?一旦您有证书请求,您就不能更改它,因为CSR应该使用您的私钥进行签名,并且签名肯定包括主题行

我正在实现Windows MDM。在这种情况下,设备发送CSR,即PKCS#10证书请求

当我去解码这个CSR时,我得到的主题是 “CN=B1C43CD0-1624-5FBB-8E54-34CF17DFD3A1\00”

此“\00”,我们要从subject属性中删除。因此,我们无法在注册期间安装company hub应用程序


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

一旦您有证书请求,您就不能更改它,因为CSR应该使用您的私钥进行签名,并且签名肯定包括主题行

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

剩下的选项如下:

  • 如上所述,正确生成CSR
  • 更改CSR,删除零值字节并重新计算所有长度,并跳过验证
  • 创建一个特殊的证书创建者,在验证或跳过CSR的签名验证后,将正确的主题(如)放入CSR
允许证书主题与PKCS#10(即CSR)主题不同。请参阅OpenSSL的'req'命令的-subq选项

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

我们正在使用此CSR生成证书(将返回到设备)。由于CSR的主题包含空字符,因此使用CSR制作的证书的主题属性中也包含空字符。由于此空字符,注册期间不会安装hub应用程序。这就是我需要更改证书主题的原因。是的,我理解您的要求,但您不能使用任何标准证书创建库来执行此操作。让你的选择在答案中更加清晰。