色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          "); //-->

          博客專欄

          EEPW首頁 > 博客 > X509證書結(jié)構(gòu)解析

          X509證書結(jié)構(gòu)解析

          發(fā)布人:電子禪石 時(shí)間:2023-07-28 來源:工程師 發(fā)布文章

          X509證書是采用DER編碼的ASN1結(jié)構(gòu)數(shù)據(jù):


          Certificate::=SEQUENCE{


          tbsCertificate TBSCertificate,


          signatureAlgorithm AlgorithmIdentifier,


          signatureValue BIT STRING


          }


          整體X509證書是SEQUENCE類型,包括三個(gè)元素。其中,tbsCertificate是證書數(shù)據(jù)本身, TBSCertificate類型,是整個(gè)X509證書數(shù)據(jù)的主體。所謂”TBS”就是“To be signed”的縮寫,tbsCertificate的意思就是“要被簽名的證書內(nèi)容”。因?yàn)樵谇懊娴奈恼轮v過,每張證書都是被上一級證書對應(yīng)的私鑰簽過名的(頂級證書是自簽名);signatureAlgorithm就是所使用的的簽名算法標(biāo)識;signatureValue就是簽名結(jié)果。


          建議使用一些ASN1解析工具,打開一個(gè)證書cer文件,對照實(shí)例學(xué)習(xí)。我這里用的是Asn1Editor,打開證書文件效果如下:



          下面介紹一下各個(gè)元素。第一個(gè)是tbsCertificate,TBSCertificate類型,其結(jié)構(gòu)定義如下。


          TBSCertificate::=SEQUENCE{


          version [0] EXPLICIT Version DEFAULT v1,


          serialNumber CertificateSerialNumber,


          signature AlgorithmIdentifier,


          issuer Name,


          validity Validity,


          subject Name,


          subjectPublicKeyInfo SubjectPublicKeyInfo,


          issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL,


          subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL,


          extensions [3] EXPLICIT Extensions OPTIONAL


          }


          TBSCertificate同樣是SEQUENCE,其各個(gè)元素說明如下:


          version

          證書的版本號,Version類型,其定義如下:

          Version ::= INTEGER { v1(0), v2(1), v3(2) }


          version的默認(rèn)值是V1,但實(shí)際上現(xiàn)在使用的證書基本是V2或V3版本。由于Tag標(biāo)記為[0] EXPLICIT,所以版本號如果沒有被省略,編碼時(shí)會在它外面加一個(gè)新的標(biāo)識。如下圖,可見此證書的版本是V3:




          serialNumber

          證書的序列號,CertificateSerialNumber類型,即INTEGER類型。

          CertificateSerialNumber ::= INTEGER


          signature

          雖然名字叫”signature”,它實(shí)際上是證書進(jìn)行簽名時(shí)的算法標(biāo)識,AlgorithmIdentifier類型,定義如下:

          AlgorithmIdentifier ::= SEQUENCE {


          algorithm OBJECT IDENTIFIER,


          parameters ANY DEFINED BY algorithm OPTIONAL


          }


          下圖可以看出,此證書的簽名算法標(biāo)識是‘’1.2.156.10197.1.501”,也就是使用SM2和SM3的簽名算法。



          issuer

          證書頒發(fā)者信息,Name類型,相關(guān)類型定義如下:

          Name ::= CHOICE {


          RDNSequence }


          RDNSequence ::= SEQUENCE OF RelativeDistinguishedName


          RelativeDistinguishedName ::=SET OF AttributeTypeAndValue


          AttributeTypeAndValue ::= SEQUENCE {


          type AttributeType,


          value AttributeValue }


          AttributeType ::= OBJECT IDENTIFIER


          AttributeValue ::= ANY DEFINED BY AttributeType


          本文中的證書頒發(fā)者包含三個(gè)信息:所在國別(countryName),頒發(fā)機(jī)構(gòu)名稱(organizationName)和通用名稱(commonName)。




          validity

          證書有效期,Validity類型

          Validity ::= SEQUENCE {


          notBefore Time, – 證書有效期起始時(shí)間


          notAfter Time – 證書有效期終止時(shí)間


          }


          Time ::= CHOICE {


          utcTime UTCTime,


          generalTime GeneralizedTime }


          從上圖可以看出,本文證書有效期起始和終止時(shí)間是UTCTime類型,長度5年。


          subject

          證書持有人(主體)信息。本文證書包含國別,所在?。╯tateOrProviceName),地址(localityName),機(jī)構(gòu)名稱和通用名稱等持有人信息。

          subjectPublicKeyInfo

          證書公鑰信息,SubjectPublicKeyInfo類型,定義如下:

          SubjectPublicKeyInfo ::= SEQUENCE {


          algorithm AlgorithmIdentifier, – 公鑰算法


          subjectPublicKey BIT STRING – 公鑰值


          }


          本證書algorithm的算法標(biāo)識是ecPublicJKey,說明使用ECC算法,第二個(gè)OBJECT IDENTIFIER是參數(shù),具體說明是采用基于ECC算法的SM2算法。




          issuerUniqueID

          證書頒發(fā)者ID,UniqueIdentifier類型,可選。本證書里不包括。

          UniqueIdentifier ::= BIT STRING


          subjectUniqueID

          證書持有人ID,UniqueIdentifier類型,可選。本證書里不包括。

          extensions

          證書擴(kuò)展字段,Extensions類型,可選。

          Extensions ::= SEQUENCE SIZE (1…MAX) OF Extension


          Extension ::= SEQUENCE {


          extnID OBJECT IDENTIFIER,


          critical BOOLEAN DEFAULT FALSE,


          extnValue OCTET STRING }


          本文證書包含的擴(kuò)展字段如下圖,具體不再一一說明。



          第二個(gè)元素signatureAlgorithm值也是‘’1.2.156.10197.1.501”,說明同樣是SM2簽名。


          第三個(gè)元素signatureValue是BIT STRING類型。值為對tbsCertificate的SM2簽名,而按照國密標(biāo)準(zhǔn)本身SM2簽名也是ASN1結(jié)構(gòu),所以從下圖可以看出簽名的r-s結(jié)構(gòu)。



          證書的X509結(jié)構(gòu)就介紹完畢,歡迎各位指正。

          ————————————————

          版權(quán)聲明:本文為CSDN博主「weixin_45303938」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。

          原文鏈接:https://blog.csdn.net/weixin_45303938/article/details/109138064


          *博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。



          關(guān)鍵詞: X509

          技術(shù)專區(qū)

          關(guān)閉