從cer證書和csr公鑰中讀取證書信息(完整)

最近項目(c#)使用了openssl頒發證書,在項目開發過程中,dn(證書信息)由後臺生成,用戶拿到dn值使用openssl生成證書,系統後臺加簽,用戶得到完整證書,其中後臺存在校驗csr和cer的證書信息的環節,並且通過下面方法可以獲取數字證書頒發者和持有者的名稱信息,歸納總結如下,以供大家參考。

首先弄清楚幾個概念:

KEY 通常指私鑰。

CSR 是Certificate Signing Request的縮寫,即證書籤名請求,這不是證書,可以簡單理解成公鑰,生成證書時要把這個提交給權威的證書頒發機構。

CER - 還是certificate,還是證書,常見於Windows系統,同樣的,可能是PEM編碼,也可能是DER編碼,大多數應該是DER編碼.

X.509 是一種證書格式.對X.509證書來說,認證者總是CA或由CA指定的人,一份X.509證書是一些標準字段的集合,這些字段包含有關用戶或設備及其相應公鑰的信息。

OpenSSL 相當於SSL的一個實現,如果把SSL規範看成OO中的接口,那麼OpenSSL則認爲是接口的實現。接口規範本身是安全沒問題的,但是具體實現可能會有不完善的地方,比如之前的"心臟出血"漏洞,就是OpenSSL中的一個bug.

下面是用c#讀取cer.csr的dn值信息,注意這裏的csr和cer都是base64格式的字符串
1.讀取cer
 使用System.Security.Cryptography.X509Certificates類庫
 byte[] rawData = System.Text.Encoding.Default.GetBytes(cer);
                    X509Certificate2 x = new X509Certificate2(rawData);  
                    string dn2 = x.Subject;
               
2.讀取csr
  使用CERTENROLLLib類庫
   CX509CertificateRequestPkcs10 csrRequest = new CX509CertificateRequestPkcs10();
                    csrRequest.InitializeDecode(csr, EncodingType.XCN_CRYPT_STRING_BASE64_ANY);
                    csrRequest.CheckSignature();
                    string dn2 = csrRequest.Subject.Name;
          
              

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章