證書的標(biāo)準(zhǔn)規(guī)范,其中使用最廣泛的是由ITU(International TelecommumcationUnion,國(guó)際電信聯(lián)盟)和ISO(IntemationalOrganizationforStandardization,國(guó)際標(biāo)準(zhǔn)化組織)兩個(gè)組織制定的X.509規(guī)范。
創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)都江堰,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220
X.509是一種非常通用的證書格式。所有的證書都符合ITU-TX.509國(guó)際標(biāo)準(zhǔn),因此(理論上)為一種應(yīng)用創(chuàng)建的證書可以用于任何其他符合X.509標(biāo)準(zhǔn)的應(yīng)用。X.509證書的結(jié)構(gòu)是用ASN1(Abstract Syntax Notation One)進(jìn)行描述數(shù)據(jù)結(jié)構(gòu),并使用ASN.1語(yǔ)法進(jìn)行編碼。
在一份證書中,必須證明公鑰及其所有者的姓名是一致的。對(duì)X.509證書來(lái)說(shuō),認(rèn)證者總是CA或由CA指定的人,一份X.509證書是一些標(biāo)準(zhǔn)字段的集合,這些字段包含有關(guān)用戶或設(shè)備及其相應(yīng)公鑰的信息。X.509標(biāo)準(zhǔn)定義了證書中應(yīng)該包含哪些信息,并描述了這些信息是如何編碼的(即數(shù)據(jù)格式)。
標(biāo)準(zhǔn)原文:
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)
本文重點(diǎn)介紹證書內(nèi)容的格式,詳見(jiàn)1.2。
1 介紹X.509證書中主要含有公鑰
、身份信息
、簽名信息
和有效性信息
等信息。這些信息用于構(gòu)建一個(gè)驗(yàn)證公鑰的體系,用來(lái)保證客戶端得到的公鑰正是它期望的公鑰。
公鑰
: 非對(duì)稱密碼中的公鑰。公鑰證書的目的就是為了在互聯(lián)網(wǎng)上分發(fā)公鑰。身份信息
: 公鑰對(duì)應(yīng)的私鑰持有者的信息,域名以及用途等。簽名信息
: 對(duì)公鑰進(jìn)行簽名的信息,提供公鑰的驗(yàn)證鏈??梢允荂A的簽名或者是自簽名,不同之處在于CA證書的根證書大都內(nèi)置于操作系統(tǒng)或者瀏覽器中,而自簽名證書的公鑰驗(yàn)證鏈則需要自己維護(hù)(手動(dòng)導(dǎo)入到操作系統(tǒng)中或者再驗(yàn)證流程中單獨(dú)提供自簽名的根證書)。有效性信息
:證書的有效時(shí)間區(qū)間,以及CRL等相關(guān)信息。DER(Distinguished Encoding Rules)
格式 :二進(jìn)制
格式,是X.690標(biāo)準(zhǔn)中的一種二進(jìn)制編碼格式。
PEM(Privacy Enhanced Mail)
格式 :ASCII文本
格式,BASE64編碼。在DER格式或者其他二進(jìn)制數(shù)據(jù)的基礎(chǔ)上,使用BASE64編碼為ASCII文本,以便于在僅支持ASCII的環(huán)境中使用二進(jìn)制的DER編碼的數(shù)據(jù)
。
PEM在RFC 7468: Textual Encodings of PKIX, PKCS, and CMS Structures (rfc-editor.org)中被正式標(biāo)準(zhǔn)化。具體格式如下:
-----BEGIN label 1-----
base64 string...
-----END label 1-----
-----BEGIN label 2-----
base64 string...
-----END label 2-----
其中label 1
和label 2
可以有1~N
個(gè)。常用的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請(qǐng)求證書文件
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 // 公鑰文件
一個(gè)具體的X.509 v3數(shù)字證書結(jié)構(gòu)如下 :
標(biāo)準(zhǔn)原文
Certificate ::= SEQUENCE {tbsCertificate TBSCertificate,
signatureAlgorithm AlgorithmIdentifier,
signatureValue BIT STRING }
// 一個(gè)證書必須包含以上三個(gè)字段
// 1.TBS證書
// 該字段包含主題和頒發(fā)者的名稱、與主題相關(guān)聯(lián)的公鑰、有效期和其他相關(guān)信息。第4.1.2節(jié)詳細(xì)描述了這些字段;TBSC證書通常包括擴(kuò)展,如第4.2節(jié)所述。
// 2.簽名算法
// signatureAlgorithm字段包含CA用于簽署此證書的加密算法的標(biāo)識(shí)符。
// [RFC3279]、[RFC4055]和[RFC4491]列出了支持的簽名算法,但也可能支持其他簽名算法。該字段必須包含與序列tbsCertificate(第4.1.2.3節(jié))中簽名字段相同的算法標(biāo)識(shí)符。
// 3.簽名內(nèi)容
// signatureValue字段包含根據(jù)ASN.1 DER編碼的tbsCertificate計(jì)算的數(shù)字簽名。ASN.1 DER編碼的tbsCertificate用作簽名函數(shù)的輸入。此簽名值編碼為位字符串,并包含在簽名字段中。此過(guò)程的詳細(xì)信息針對(duì)[RFC3279]、[RFC4055]和[RFC4491]中列出的每種算法進(jìn)行了說(shuō)明。
// 通過(guò)生成此簽名,CA將證明tbsCertificate字段中信息的有效性。特別是,CA認(rèn)證公鑰材料與證書主題之間的綁定。
// 下面對(duì)三個(gè)字段結(jié)構(gòu)進(jìn)行詳解
// 1.TBS證書結(jié)構(gòu)詳解 tbsCertificate
TBSCertificate ::= SEQUENCE {version [0] EXPLICIT Version DEFAULT v1, // 版本號(hào)
serialNumber CertificateSerialNumber, // 序列號(hào)
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 // 擴(kuò)展信息-可選
}
// 以下對(duì)成員結(jié)構(gòu)定義解釋
// 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ā)者字段標(biāo)識(shí)已簽署和頒發(fā)證書的實(shí)體。頒發(fā)者字段必須包含非空的可分辨名稱(DN)。該字段定義為X.501類型名稱[X.501]。名稱由以下ASN.1結(jié)構(gòu)定義:
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í)際簽名數(shù)據(jù)
...
2 文件擴(kuò)展名X.509有很多種常用的擴(kuò)展名。不過(guò)這些擴(kuò)展名有時(shí)候也是其他類型文件的擴(kuò)展名,也就是說(shuō)具有這個(gè)擴(kuò)展名的文件并不一定是X.509證書。也可能只是保存了私鑰的文件。
.pem
: (隱私增強(qiáng)型電子郵件)DER編碼的證書再進(jìn)行BASE64編碼的數(shù)據(jù)存放在"-----BEGIN CERTIFICATE-----“和”-----END CERTIFICATE-----"之中。.key
: PEM格式的私鑰文件。.pub
: PEM格式的公鑰文件。.crt
: PEM或DER格式的公鑰證書文件。.cer
: PEM或DER格式的公鑰證書文件。.csr
: PEM或DER格式的證書請(qǐng)求CSR文件。.der
:DER格式的公鑰證書文件。.p7b
,.p7c
–PKCS#7SignedData structure without data, just certificate(s) orCRL(s).p12
–PKCS#12格式,包含證書的同時(shí)可能還有帶密碼保護(hù)的私鑰.pfx
– PFX,PKCS#12之前的格式(通常用PKCS#12格式,比如那些由IIS產(chǎn)生的PFX文件)PKCS#7是簽名或加密數(shù)據(jù)的格式標(biāo)準(zhǔn),官方稱之為容器。由于證書是可驗(yàn)真的簽名數(shù)據(jù),所以可以用SignedData結(jié)構(gòu)表述。.P7C文件是退化的SignedData結(jié)構(gòu),沒(méi)有包括簽名的數(shù)據(jù)。
PKCS#12由PFX進(jìn)化而來(lái)的用于交換公共的和私有的對(duì)象的標(biāo)準(zhǔn)格式。
3 例子PEM格式采用文本方式進(jìn)行存儲(chǔ)。一般包括首尾標(biāo)記和內(nèi)容塊,內(nèi)容塊采用Base64進(jìn)行編碼。
例如,一個(gè)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
證書中的解析出來(lái)的內(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 證書長(zhǎng)度不同的簽名加密方式,證書長(zhǎng)度不一樣,RSA1024的證書差不多1K,2048就要2K左右,ECC 256的大概六七百個(gè)字節(jié)等等。
證書允許擴(kuò)展字段,所以有可能長(zhǎng)度比較長(zhǎng),根據(jù)擴(kuò)展信息的增加,證書大小都會(huì)變化。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
本文標(biāo)題:數(shù)字證書X509格式標(biāo)準(zhǔn)簡(jiǎn)介-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://m.2m8n56k.cn/article44/dhhphe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站導(dǎo)航、關(guān)鍵詞優(yōu)化、響應(yīng)式網(wǎng)站、企業(yè)建站、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容