X.509證書結構
算法
X.509標準定義了證書中應該包含哪些信息,並描述了這些信息是如何編碼的(即數據格式),全部的X.509證書包含如下數據: ui
(1)、X.509版本號:指出該證書使用了哪一種版本的X.509標準,版本號會影響證書中的一些特定信息。 目前的版本是3。編碼
(2)、證書持有人的公鑰:包括證書持有人的公鑰、算法(指明密鑰屬於哪一種密碼系統)的標識符和其 他相關的密鑰參數。加密
(3)、證書的序列號:由CA給予每個證書分配的惟一的數字型編號。spa
當證書被取消時,其實是將此證書序列號放入由CA簽發的CRL (Certificate Revocation List證書做廢表,或證書黑名單表)中。這也是序列號惟一的緣由。3d
(4)、主題信息:證書持有人惟一的標識符(或稱DN-distinguished name)這個名字在Internet上應 該是惟一的。DN由許多部分組成,例如這樣: server
CN = Bob Allen,md5
OU = Total Network Security Divisionssl
O = Network Associates, Inc.ci
C = US
這些信息指出該科目的通用名、組織單位、組織和國家或者證書持有人的姓名、服 務處所等信息。
(5)、證書的有效期:證書起始日期和時間以及終止日期和時間;指明證書在這兩個時間內有效。
(6)、認證機構:證書發佈者,是簽發該證書的實體惟一的CA的X.500名字。
使用該證書意味着信任簽發證書的實體。
(7)、發佈者的數字簽名: 這是使用發佈者私鑰生成的簽名,以確保這個證書在發放以後沒有被撰改 過。
(8)、簽名算法標識符:用來指定CA簽署證書時所使用的簽名算法。算法標識符用來指定CA簽發證 書時所使用的公開密鑰算法和HASH算法。
H--Hash計算
E--加密計算
D--解密計算
在簽發者處,首先求出傳遞消息Info的HASH值,而後用私鑰Private Key 對Hash值作加密,而後將傳遞消息原文Info和通過加密的HASH值一塊兒發給接 受者,接受者首先用簽發者的公鑰揭開密碼,而後對收到的Info原文計算HASH 值,而後比對是否相對,若是相同,則認證成功。
證書實例
RSA證書,非CA證書 (來源於wiki)
$ openssl x509 -in freesoft-certificate.pem -noout -text
Certificate:
Data:
Version: 1 (0x0) // 該證書版本號是 1
Serial Number: 7829 (0x1e95) // 序列號
Signature Algorithm: md5WithRSAEncryption //該證書使用RSA和MD5算法簽名
//證書發行者信息
Issuer: C=ZA, ST=Western Cape, L=Cape Town, O=Thawte Consulting cc,
OU=Certification Services Division,
CN=Thawte Server //證書發行者名字
CA/emailAddress=server-certs@thawte.com // CA的聯繫方式
Validity // 有效期 1998/7/9 - 1999/7/9
Not Before: Jul 9 16:04:02 1998 GMT
Not After : Jul 9 16:04:02 1999 GMT
//證書主體信息
Subject: C=US, ST=Maryland, L=Pasadena, O=Brent Baccala,
OU=FreeSoft, //證書主體名字CN=www.freesoft.org/emailAddress=baccala@freesoft.org // 證書主體的聯繫方式
Subject Public Key Info:
Public Key Algorithm: rsaEncryption //公鑰使用RSA算法
RSA Public Key: (1024 bit) // 1024位的RSA公鑰
Modulus (1024 bit):
00:b4:31:98:0a:c4:bc:62:c1:88:aa:dc:b0:c8:bb:
33:35:19:d5:0c:64:b9:3d:41:b2:96:fc:f3:31:e1:
66:36:d0:8e:56:12:44:ba:75:eb:e8:1c:9c:5b:66:
70:33:52:14:c9:ec:4f:91:51:70:39:de:53:85:17:
16:94:6e:ee:f4:d5:6f:d5:ca:b3:47:5e:1b:0c:7b:
c5:cc:2b:6b:c1:90:c3:16:31:0d:bf:7a:c7:47:77:
8f:a0:21:c7:4c:d0:16:65:00:c1:0f:d7:b8:80:e3:
d2:75:6b:c1:ea:9e:5c:5c:ea:7d:c1:a1:10:bc:b8:
e8:35:1c:9e:27:52:7e:41:8f
Exponent: 65537 (0x10001)
Signature Algorithm: md5WithRSAEncryption //用RSA算法加密MD5散列,完成簽名
93:5f:8f:5f:c5:af:bf:0a:ab:a5:6d:fb:24:5f:b6:59:5d:9d:
92:2e:4a:1b:8b:ac:7d:99:17:5d:cd:19:f6:ad:ef:63:2f:92:
ab:2f:4b:cf:0a:13:90:ee:2c:0e:43:03:be:f6:ea:8e:9c:67:
d0:a2:40:03:f7:ef:6a:15:09:79:a9:46:ed:b7:16:1b:41:72:
0d:19:aa:ad:dd:9a:df:ab:97:50:65:f5:5e:85:a6:ef:19:d1:
5a:de:9d:ea:63:cd:cb:cc:6d:5d:01:85:b5:6d:c8:f3:d9:f7:
8f:0e:fc:ba:1f:34:e9:96:6e:6c:cf:f2:ef:9b:bf:de:b5:22:
68:9f