【问题标题】:X509 custom extensions - how do you set them?X509 自定义扩展 - 你如何设置它们?
【发布时间】:2012-07-08 00:07:09
【问题描述】:

尽管进行了广泛的搜索,但我找不到任何在 X509 (v3) 证书上设置自定义扩展(CustomExtensions 属性)的示例。

如果我想生成一个新证书(基于机器上已经安装的现有 CA 证书),我该如何添加自定义扩展?我希望在证书中携带一些额外的自定义信息以供以后检查。这可以通过编程方式或使用 makecert 来完成吗?还是只能通过编写生成证书时调用的custom policy module 来设置这些扩展?这甚至可以通过使用 .Net 框架中的常规 X509CertificateX509Certificate2 类来实现吗?

我找到了检查自定义扩展的代码,但没有找到设置它的代码。

【问题讨论】:

  • custom-extensions 有点……通用。你能找到更好的吗?
  • 请注意,当它符合条件时,我将为此提供至少 200 的赏金。欢迎提供图书馆等的建议,只要他们回答问题并且您可以展示工作示例。
  • @Charles - 完成。这是一个新标签,现在我对其进行了一些改进。
  • 非常感谢。您可能希望找到它可能适用的其他问题。新标签讨厌只被一个问题困住......
  • @slugster:你检查过这个库吗? bouncycastle.org/csharp

标签: c# x509 x509certificate2


【解决方案1】:

无论您拥有什么现有证书,它都会通过签名“密封”。更改其内容会使签名无效,从而使证书无效。这就是为什么您找不到任何有关您想要做什么的信息的原因。

当您通过 MMC 中的证书管理管理单元查看证书或在 Internet Explolrer 中浏览证书时,您可能会感到困惑的是证书的自定义属性。此类属性不存储在证书中 - 它们由 CryptoAPI 单独保存,而不是“嵌入”到证书中。

对于您拥有私钥的自签名证书,您可以重新创建证书并为其添加自定义扩展,但这种情况很少见。我不确定 .NET Framework 是否允许您使用自定义扩展,但我们的 SecureBlackbox 可以。

【讨论】:

  • 我希望在证书生成的那一刻将一些客户特定的信息嵌入到证书中(之后不会更改,目的是在使用证书时可以检查这些信息/presented) - 但我还没有找到关于如何做到这一点的明确说明。只能通过证书模板完成吗?是否可以在创建证书之前即时生成或修改该模板?
  • @slugster 也许我在“生成新证书(基于机器上已安装的现有证书)”部分中误解了您的问题。我不知道如何使用 .NET 类生成带有自定义扩展的证书,以及是否真的有可能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-15
  • 2016-10-13
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
相关资源
最近更新 更多