真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

數(shù)字證書X509格式標準簡介-創(chuàng)新互聯(lián)

證書的標準規(guī)范,其中使用最廣泛的是由ITU(International TelecommumcationUnion,國際電信聯(lián)盟)和ISO(IntemationalOrganizationforStandardization,國際標準化組織)兩個組織制定的X.509規(guī)范。

創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務都江堰,十年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:028-86922220

X.509是一種非常通用的證書格式。所有的證書都符合ITU-TX.509國際標準,因此(理論上)為一種應用創(chuàng)建的證書可以用于任何其他符合X.509標準的應用。X.509證書的結構是用ASN1(Abstract Syntax Notation One)進行描述數(shù)據(jù)結構,并使用ASN.1語法進行編碼。

在一份證書中,必須證明公鑰及其所有者的姓名是一致的。對X.509證書來說,認證者總是CA或由CA指定的人,一份X.509證書是一些標準字段的集合,這些字段包含有關用戶或設備及其相應公鑰的信息。X.509標準定義了證書中應該包含哪些信息,并描述了這些信息是如何編碼的(即數(shù)據(jù)格式)。

標準原文:

RFC 5280: Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile (rfc-editor.org)

RFC5280 中文翻譯 中文RFC RFC文檔 RFC翻譯 RFC中文版 (rfc2cn.com)

本文重點介紹證書內(nèi)容的格式,詳見1.2。

1 介紹

X.509證書中主要含有公鑰身份信息、簽名信息有效性信息等信息。這些信息用于構建一個驗證公鑰的體系,用來保證客戶端得到的公鑰正是它期望的公鑰。

  1. 公鑰: 非對稱密碼中的公鑰。公鑰證書的目的就是為了在互聯(lián)網(wǎng)上分發(fā)公鑰。
  2. 身份信息: 公鑰對應的私鑰持有者的信息,域名以及用途等。
  3. 簽名信息: 對公鑰進行簽名的信息,提供公鑰的驗證鏈。可以是CA的簽名或者是自簽名,不同之處在于CA證書的根證書大都內(nèi)置于操作系統(tǒng)或者瀏覽器中,而自簽名證書的公鑰驗證鏈則需要自己維護(手動導入到操作系統(tǒng)中或者再驗證流程中單獨提供自簽名的根證書)。
  4. 有效性信息:證書的有效時間區(qū)間,以及CRL等相關信息。
1.1 證書格式
  1. DER(Distinguished Encoding Rules)

    格式 :二進制格式,是X.690標準中的一種二進制編碼格式。

  2. PEM(Privacy Enhanced Mail)

    格式 :ASCII文本格式,BASE64編碼。在DER格式或者其他二進制數(shù)據(jù)的基礎上,使用BASE64編碼為ASCII文本,以便于在僅支持ASCII的環(huán)境中使用二進制的DER編碼的數(shù)據(jù)。

    PEM在RFC 7468: Textual Encodings of PKIX, PKCS, and CMS Structures (rfc-editor.org)中被正式標準化。具體格式如下:

    -----BEGIN label 1-----
    base64 string...
    -----END label 1-----
    -----BEGIN label 2-----
    base64 string...
    -----END label 2-----

    其中label 1label 2可以有1~N個。常用的label有(RFC 7468: Textual Encodings of PKIX, PKCS, and CMS Structures (rfc-editor.org)):

    Sec. Label                  ASN.1 Type              Reference Module
    ----+----------------------+-----------------------+---------+----------
      5  CERTIFICATE            Certificate             [RFC5280] id-pkix1-e	// 公鑰證書文件
      6  X509 CRL               CertificateList         [RFC5280] id-pkix1-e	// X509證書吊銷列表文件
      7  CERTIFICATE REQUEST    CertificationRequest    [RFC2986] id-pkcs10		// CSR請求證書文件
      8  PKCS7                  ContentInfo             [RFC2315] id-pkcs7*		// PKCS7文件
      9  CMS                    ContentInfo             [RFC5652] id-cms2004	// CMS文件
     10  PRIVATE KEY            PrivateKeyInfo ::=      [RFC5208] id-pkcs8		// 私鑰文件
                                OneAsymmetricKey        [RFC5958] id-aKPV1
     11  ENCRYPTED PRIVATE KEY  EncryptedPrivateKeyInfo [RFC5958] id-aKPV1		// 加密私鑰文件
     12  ATTRIBUTE CERTIFICATE  AttributeCertificate    [RFC5755] id-acv2		// 證書屬性文件
     13  PUBLIC KEY             SubjectPublicKeyInfo    [RFC5280] id-pkix1-e	// 公鑰文件
1.2 證書結構

一個具體的X.509 v3數(shù)字證書結構如下 :

標準原文
Certificate  ::=  SEQUENCE  {tbsCertificate       TBSCertificate,
        signatureAlgorithm   AlgorithmIdentifier,
        signatureValue       BIT STRING  }
// 一個證書必須包含以上三個字段

// 1.TBS證書
// 該字段包含主題和頒發(fā)者的名稱、與主題相關聯(lián)的公鑰、有效期和其他相關信息。第4.1.2節(jié)詳細描述了這些字段;TBSC證書通常包括擴展,如第4.2節(jié)所述。

// 2.簽名算法
// signatureAlgorithm字段包含CA用于簽署此證書的加密算法的標識符。
// [RFC3279]、[RFC4055]和[RFC4491]列出了支持的簽名算法,但也可能支持其他簽名算法。該字段必須包含與序列tbsCertificate(第4.1.2.3節(jié))中簽名字段相同的算法標識符。

// 3.簽名內(nèi)容
// signatureValue字段包含根據(jù)ASN.1 DER編碼的tbsCertificate計算的數(shù)字簽名。ASN.1 DER編碼的tbsCertificate用作簽名函數(shù)的輸入。此簽名值編碼為位字符串,并包含在簽名字段中。此過程的詳細信息針對[RFC3279]、[RFC4055]和[RFC4491]中列出的每種算法進行了說明。
// 通過生成此簽名,CA將證明tbsCertificate字段中信息的有效性。特別是,CA認證公鑰材料與證書主題之間的綁定。

// 下面對三個字段結構進行詳解

// 1.TBS證書結構詳解 tbsCertificate
   TBSCertificate  ::=  SEQUENCE  {version         [0]  EXPLICIT Version DEFAULT v1,	// 版本號
        serialNumber         CertificateSerialNumber,		// 序列號
        signature            AlgorithmIdentifier,			// 公鑰算法
        issuer               Name,    						// 頒發(fā)者名稱
        validity             Validity,						// 有效期
        subject              Name,    						// 被簽名者名稱
        subjectPublicKeyInfo SubjectPublicKeyInfo, 			// 被簽名者公鑰信息
        issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version MUST be v2 or v3 // 頒發(fā)者唯一ID-可選
        subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL, -- If present, version MUST be v2 or v3 // 被簽者唯一ID-可選
        extensions      [3]  EXPLICIT Extensions OPTIONAL        -- If present, version MUST be v3 // 擴展信息-可選
        }

	// 以下對成員結構定義解釋

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

	// serialNumber
    CertificateSerialNumber  ::=  INTEGER

    // signature
    AlgorithmIdentifier  ::=  SEQUENCE  {algorithm               OBJECT IDENTIFIER,
        parameters              ANY DEFINED BY algorithm OPTIONAL  }

    // issuer name
	// 頒發(fā)者字段標識已簽署和頒發(fā)證書的實體。頒發(fā)者字段必須包含非空的可分辨名稱(DN)。該字段定義為X.501類型名稱[X.501]。名稱由以下ASN.1結構定義:
	Name ::= CHOICE {-- only one possibility for now --
     rdnSequence  RDNSequence }
	RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
    RelativeDistinguishedName ::=
     SET SIZE (1..MAX) OF AttributeTypeAndValue
	AttributeTypeAndValue ::= SEQUENCE { type     AttributeType,
     value    AttributeValue }
	AttributeType ::= OBJECT IDENTIFIER
	AttributeValue ::= ANY -- DEFINED BY AttributeType
	DirectoryString ::= CHOICE { teletexString           TeletexString (SIZE (1..MAX)),
         printableString         PrintableString (SIZE (1..MAX)),
         universalString         UniversalString (SIZE (1..MAX)),
         utf8String              UTF8String (SIZE (1..MAX)),
         bmpString               BMPString (SIZE (1..MAX)) }

	// validity
    Validity ::= SEQUENCE {notBefore      Time,
        notAfter       Time }
    Time ::= CHOICE {utcTime        UTCTime,
        generalTime    GeneralizedTime }

	// subject name
	// 一般和issuer name規(guī)定一致

    // subjectPublicKeyInfo
    SubjectPublicKeyInfo  ::=  SEQUENCE  {algorithm            AlgorithmIdentifier,
        subjectPublicKey     BIT STRING  }

	// issuerUniqueID
    UniqueIdentifier  ::=  BIT STRING

    // subjectUniqueID
    // 和issuerUniqueID一樣

	// extensions
    Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension
    Extension  ::=  SEQUENCE  {extnID      OBJECT IDENTIFIER,
        critical    BOOLEAN DEFAULT FALSE,
        extnValue   OCTET STRING
                    -- contains the DER encoding of an ASN.1 value
                    -- corresponding to the extension type identified
                    -- by extnID  }

// 2.證書簽名算法 signatureAlgorithm
	AlgorithmIdentifier  ::=  SEQUENCE  {algorithm               OBJECT IDENTIFIER,
        parameters              ANY DEFINED BY algorithm OPTIONAL  }

// 3.數(shù)字簽名內(nèi)容,實際簽名數(shù)據(jù)
...
2 文件擴展名

X.509有很多種常用的擴展名。不過這些擴展名有時候也是其他類型文件的擴展名,也就是說具有這個擴展名的文件并不一定是X.509證書。也可能只是保存了私鑰的文件。

  1. .pem: (隱私增強型電子郵件)DER編碼的證書再進行BASE64編碼的數(shù)據(jù)存放在"-----BEGIN CERTIFICATE-----“和”-----END CERTIFICATE-----"之中。
  2. .key: PEM格式的私鑰文件。
  3. .pub: PEM格式的公鑰文件。
  4. .crt: PEM或DER格式的公鑰證書文件。
  5. .cer: PEM或DER格式的公鑰證書文件。
  6. .csr: PEM或DER格式的證書請求CSR文件。
  7. .der:DER格式的公鑰證書文件。
  8. .p7b,.p7c–PKCS#7SignedData structure without data, just certificate(s) orCRL(s)
  9. .p12–PKCS#12格式,包含證書的同時可能還有帶密碼保護的私鑰
  10. .pfx– PFX,PKCS#12之前的格式(通常用PKCS#12格式,比如那些由IIS產(chǎn)生的PFX文件)

PKCS#7是簽名或加密數(shù)據(jù)的格式標準,官方稱之為容器。由于證書是可驗真的簽名數(shù)據(jù),所以可以用SignedData結構表述。.P7C文件是退化的SignedData結構,沒有包括簽名的數(shù)據(jù)。

PKCS#12由PFX進化而來的用于交換公共的和私有的對象的標準格式。

3 例子

PEM格式采用文本方式進行存儲。一般包括首尾標記和內(nèi)容塊,內(nèi)容塊采用Base64進行編碼。

例如,一個PEM格式(base64編碼)的示例證書文件內(nèi)容如下所示:

-----BEGIN CERTIFICATE-----
MIIDyjCCArKgAwIBAgIQdZfkKrISoINLporOrZLXPTANBgkqhkiG9w0BAQsFADBn
MSswKQYDVQQLDCJDcmVhdGVkIGJ5IGh0dHA6Ly93d3cuZmlkZGxlcjIuY29tMRUw
EwYDVQQKDAxET19OT1RfVFJVU1QxITAfBgNVBAMMGERPX05PVF9UUlVTVF9GaWRk
bGVyUm9vdDAeFw0xNzA0MTExNjQ4MzhaFw0yMzA0MTExNjQ4MzhaMFoxKzApBgNV
BAsMIkNyZWF0ZWQgYnkgaHR0cDovL3d3dy5maWRkbGVyMi5jb20xFTATBgNVBAoM
DERPX05PVF9UUlVTVDEUMBIGA1UEAwwLKi5iYWlkdS5jb20wggEiMA0GCSqGSIb3
DQEBAQUAA4IBDwAwggEKAoIBAQDX0AM198jxwRoKgwWsd9oj5vI0and9v9SB9Chl
gZEu6G9ZA0C7BucsBzJ2bl0Mf6qq0Iee1DfeydfEKyTmBKTafgb2DoQE3OHZjy0B
QTJrsOdf5s636W5gJp4f7CUYYA/3e1nxr/+AuG44Idlsi17TWodVKjsQhjzH+bK6
8ukQZyel1SgBeQOivzxXe0rhXzrocoeKZFmUxLkUpm+/mX1syDTdaCmQ6LT4KYYi
soKe4f+r2tLbUzPKxtk2F1v3ZLOjiRdzCOA27e5n88zdAFrCmMB4teG/azCSAH3g
Yb6vaAGaOnKyDLGunW51sSesWBpHceJnMfrhwxCjiv707JZtAgMBAAGjfzB9MA4G
A1UdDwEB/wQEAwIEsDATBgNVHSUEDDAKBggrBgEFBQcDATAWBgNVHREEDzANggsq
LmJhaWR1LmNvbTAfBgNVHSMEGDAWgBQ9UIffUQSuwWGOm+o74JffZJNadjAdBgNV
HQ4EFgQUQh8IksZqcMVmKrIibTHLbAgLRGgwDQYJKoZIhvcNAQELBQADggEBAC5Y
JndwXpm0W+9SUlQhAUSE9LZh+DzcSmlCWtBk+SKBwmAegbfNSf6CgCh0VY6iIhbn
GlszqgAOAqVMxAEDlR/YJTOlAUXFw8KICsWdvE01xtHqhk1tCK154Otci60Wu+tz
1t8999GPbJskecbRDGRDSA/gQGZJuL0rnmIuz3macSVn6tH7NwdoNeN68Uj3Qyt5
orYv1IFm8t55224ga8ac1y90hK4R5HcvN71aIjMKrikgynK0E+g45QypHRIe/z0S
/1W/6rqTgfN6OWc0c15hPeJbTtkntB5Fqd0sfsnKkW6jPsKQ+z/+vZ5XqzdlFupQ
29F14ei8ZHl9aLIHP5s=
-----END CERTIFICATE-----
1234567891011121314151617181920212223

使用openssl 工具命令:openssl x509 -in ca-cert.pem -inform pem -noout -text

證書中的解析出來的內(nèi)容:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            10:e6:fc:62:b7:41:8a:d5:00:5e:45:b6
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: C=BE, O=GlobalSign nv-sa, CN=GlobalSign Organization Validation CA-SHA256-G2
        Validity
            Not Before: Nov 21 08:00:00 2016 GMT
            Not After : Nov 22 07:59:59 2017 GMT
        Subject: C=US, ST=California, L=San Francisco, O=Wikimedia Foundation, Inc., CN=*.wikipedia.org
        Subject Public Key Info:
            Public Key Algorithm: id-ecPublicKey
                Public-Key: (256 bit)
                pub: 
                    04:c9:22:69:31:8a:d6:6c:ea:da:c3:7f:2c:ac:a5:
                    af:c0:02:ea:81:cb:65:b9:fd:0c:6d:46:5b:c9:1e:
                    ed:b2:ac:2a:1b:4a:ec:80:7b:e7:1a:51:e0:df:f7:
                    c7:4a:20:7b:91:4b:20:07:21:ce:cf:68:65:8c:c6:
                    9d:3b:ef:d5:c1
                ASN1 OID: prime256v1
                NIST CURVE: P-256
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Agreement
            Authority Information Access: 
                CA Issuers - URI:http://secure.globalsign.com/cacert/gsorganizationvalsha2g2r1.crt
                OCSP - URI:http://ocsp2.globalsign.com/gsorganizationvalsha2g2

            X509v3 Certificate Policies: 
                Policy: 1.3.6.1.4.1.4146.1.20
                  CPS: https://www.globalsign.com/repository/
                Policy: 2.23.140.1.2.2

            X509v3 Basic Constraints: 
                CA:FALSE
            X509v3 CRL Distribution Points: 

                Full Name:
                  URI:http://crl.globalsign.com/gs/gsorganizationvalsha2g2.crl

            X509v3 Subject Alternative Name: 
                DNS:*.wikipedia.org, DNS:*.m.mediawiki.org, DNS:*.m.wikibooks.org, DNS:*.m.wikidata.org, DNS:*.m.wikimedia.org, DNS:*.m.wikimediafoundation.org, DNS:*.m.wikinews.org, DNS:*.m.wikipedia.org, DNS:*.m.wikiquote.org, DNS:*.m.wikisource.org, DNS:*.m.wikiversity.org, DNS:*.m.wikivoyage.org, DNS:*.m.wiktionary.org, DNS:*.mediawiki.org, DNS:*.planet.wikimedia.org, DNS:*.wikibooks.org, DNS:*.wikidata.org, DNS:*.wikimedia.org, DNS:*.wikimediafoundation.org, DNS:*.wikinews.org, DNS:*.wikiquote.org, DNS:*.wikisource.org, DNS:*.wikiversity.org, DNS:*.wikivoyage.org, DNS:*.wiktionary.org, DNS:*.wmfusercontent.org, DNS:*.zero.wikipedia.org, DNS:mediawiki.org, DNS:w.wiki, DNS:wikibooks.org, DNS:wikidata.org, DNS:wikimedia.org, DNS:wikimediafoundation.org, DNS:wikinews.org, DNS:wikiquote.org, DNS:wikisource.org, DNS:wikiversity.org, DNS:wikivoyage.org, DNS:wiktionary.org, DNS:wmfusercontent.org, DNS:wikipedia.org
            X509v3 Extended Key Usage: 
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Subject Key Identifier: 
                28:2A:26:2A:57:8B:3B:CE:B4:D6:AB:54:EF:D7:38:21:2C:49:5C:36
            X509v3 Authority Key Identifier: 
                keyid:96:DE:61:F1:BD:1C:16:29:53:1C:C0:CC:7D:3B:83:00:40:E6:1A:7C

    Signature Algorithm: sha256WithRSAEncryption
         8b:c3:ed:d1:9d:39:6f:af:40:72:bd:1e:18:5e:30:54:23:35:
         ...
4 證書長度

不同的簽名加密方式,證書長度不一樣,RSA1024的證書差不多1K,2048就要2K左右,ECC 256的大概六七百個字節(jié)等等。

證書允許擴展字段,所以有可能長度比較長,根據(jù)擴展信息的增加,證書大小都會變化。

你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


新聞標題:數(shù)字證書X509格式標準簡介-創(chuàng)新互聯(lián)
分享URL:http://weahome.cn/article/dhhphe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部