【问题标题】:Export a certificate in asn.1 notation from X509Certificate2从 X509Certificate2 以 asn.1 表示法导出证书
【发布时间】:2011-12-17 06:49:27
【问题描述】:

我目前正在学习使用证书,现在我很好奇,是否可以从 X509Certificate2-instance 获取已加载证书的 ASN.1 表示法。

我找到了Export-Method 并且它工作正常,但是我还没有看到改变输出格式编码的可能性 - 它只是 DER 格式。

是否可以将加载的证书导出/转换为 ASCII ASN.1 证书,如下例所示:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 1 (0x1)
        Signature Algorithm: md5WithRSAEncryption
        Issuer: C=XY....
 ...

或者是否有将 DER 转换为纯文本的转换器?

【问题讨论】:

    标签: .net cryptography certificate asn.1 der


    【解决方案1】:

    根据您是否需要在 .Net 中执行此操作,您可能对this answeropenssl asn1parse,使用您导出的 DER 文件)感兴趣。

    如果您需要在 .Net 中执行此操作,您应该可以使用 BouncyCastle

    【讨论】:

    • 或者他想要的只是openssl x509 -text -noout -in <certfile>
    • @GregS - 效果很好,除了我还必须添加“-inform DER”。你应该把它作为答案!
    【解决方案2】:

    几年前,我编写了一个 Gtk# 工具(用 C# 编写)来执行此操作。完整的源代码可从https://github.com/mono/mono-tools/tree/master/asn1view获得

    您可能只需要 common/PrettyPrinter.cscommon/ASN1Decoder.cs ,除非您想要漂亮的 OID 名称。

    编辑:上面的证书比 X.509 证书的级别要低一些 - 但它适用于 X.509 CRL 和您知道(或不知道)可以嵌入到证书/crl。

    【讨论】:

    • +1 太好了!谢谢!您是否有一个代码块已经为 OidCache 类定义了一些常用的 OID?
    • 不,它是完全按需的,即根据需要检索/缓存。 OTOH,您可以通过在多个证书上运行该代码来构建预缓存,并将其作为默认值发送。
    猜你喜欢
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多