【问题标题】:How to change Subject property of Certificate Signing Request programmatically?如何以编程方式更改证书签名请求的主题属性?
【发布时间】:2013-10-18 10:07:08
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      一旦收到证书请求,您就无法更改它,因为 CSR 应该使用您的私钥签名,并且签名肯定包括主题行。

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

      您有以下选择:

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

      【讨论】:

      • 我们正在使用此 CSR 生成证书(将返回到设备)。由于 CSR 的主题包含空字符,因此使用 CSR 制作的证书在其主题属性中也包含空字符。由于此空字符,在注册期间不会安装中心应用程序。这就是我需要更改证书主题的原因。
      • 是的,我了解您想要,但您无法使用任何标准证书创建库来执行此操作。在答案中让您的选择更加明确。
      猜你喜欢
      • 2016-12-21
      • 2017-03-20
      • 2022-01-19
      • 2014-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      相关资源
      最近更新 更多