2011-10-28 71 views
2

我目前正在學習如何使用證書,現在我很好奇,是否有可能從X509Certificate2 -instance獲得加載證書的ASN.1表示法。從X509Certificate2導出asn.1表示法的證書

我找到了Export - 方法和它的工作正常,但我還沒有看到改變輸出格式的編碼的可能性 - 它只是在DER格式。

有沒有在下面的例子中導出/轉換加載的證書作爲ASCII ASN.1的證書,就像一個可能性:

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

或者是有一個轉換器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其他結構的工作。

+0

+1太棒了!謝謝!你有沒有定義OidCache類的一些常用OID的代碼塊? – HCL

+0

不,它完全按需提供,即根據需要進行檢索/緩存。 OTOH你可以通過在多個證書上運行該代碼構建一個預緩存,並將其作爲默認發佈。 – poupou

2

根據您是否需要在.Net中執行此操作,您可能對this answeropenssl asn1parse,使用您導出的DER文件)感興趣。

如果您需要在.Net中執行此操作,則應該可以使用BouncyCastle

+2

或者只是'openssl x509 -text -noout -in '是他想要的嗎? –

+0

+1非常感謝。 – HCL

+2

@GregS - 除了我必須添加'-inform DER'之外,它的效果非常好。你應該把它當作答案! – Despertar