2012-07-08 178 views
2

尽管进行了大量搜索,但我找不到在X509(v3)证书上设置自定义扩展名(CustomExtensions属性)的任何示例。X509自定义扩展 - 您如何设置它们?

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

我发现检查自定义扩展的代码,但没有设置它。

+0

[tag:custom-extensions]有点... * generic *。你能找到更好的东西吗? – Charles 2012-07-08 04:48:58

+0

请注意,当它变为符合条件时,我将在此提供至少200条赏金。如果他们回答这个问题,并且你可以展示一个工作样本,欢迎图书馆等人的建议。 – slugster 2012-07-08 04:50:02

+0

@Charles - 完成。这是一个新的标签,现在我已经细化了一下。 – slugster 2012-07-08 04:52:24

回答

1

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

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

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

+0

我期待在生成的时刻在证书中嵌入一些客户特定的信息(在此之后它不会被更改,它的目的是可以检查信息当证书被使用/呈现时) - 但我还没有找到明确的指示如何做到这一点。它只能通过证书模板完成吗?在创建证书之前可以生成或修改该模板吗? – slugster 2012-07-08 06:48:22

+0

@slugster也许我在“生成新证书(基于机器上已安装的现有证书)”部分误解了您的问题。我不知道如何使用.NET类自定义扩展生成证书,以及是否真的有可能。 – 2012-07-08 12:31:11