X.509

數字證書的格式遵循X.509標準。X.509是由國際電信聯盟(ITU-T)制定的數字證書標準。X.509包含了一個證書吊銷列表(CRL-Certificate Revocation List)實施的標準,這在PKI系統中經常被人所忽略。X.509被廣泛使用的數字證書標準,是由國際電聯電信委員會(ITU-T)為單點登錄(SSO-Single Sign-on)和授權管理基礎設施(PMI-Privilege Management Infrastructure)制定的PKI標準。X.509 2 版引入了主體和簽發人唯一標識符的概念,以解決主體和/或簽發人名稱在一段時間後可能重複使用的問題。

簡介

X.509被廣泛使用的數字證書標準,是由國際電聯電信委員會(ITU-T)為單點登錄(SSO-Single Sign-on)和授權管理基礎設施(PMI-Privilege Management Infrastructure)制定的PKI標準。

歷史用途

X.509最初是在1988年的7月3日發布的,版本是X.509 v1,當時是作為ITU X.500目錄服務標準的一部分。它設定了一系列嚴格的CA分級體系來頒發數字證書。和其他網路信任模型(譬如PGP)對比,任何人,不僅僅是特定的CA,可以簽發並驗證其他密鑰證書的有效性。

X.509 2 版引入了主體和簽發人唯一標識符的概念,以解決主體和/或簽發人名稱在一段時間後可能重複使用的問題。大多數證書監視文檔都極力建議不要重複使用主體或簽發人名稱,而且建議證書不要使用唯一標識符。版本 2 證書尚未得到廣泛使用。

X.509 3 版是最新的版本(1996 年)。它支持擴展的概念,因此任何人均可定義擴展並將其納入證書中。常用的擴展包括:KeyUsage(僅限密鑰用於特殊目的,例如“只簽”)和 AlternativeNames(允許其它標識與該公鑰關聯,例如 DNS 名、電子郵件地址、IP 地址)。擴展可標記為“極重要”,以表示應選中該擴展並強制執行或使用。例如,如果某一證書將 KeyUsage 擴展標記為“極重要”,而且設定為“keyCertSign”,則在 SSL 通信期間該證書出現時將被拒絕,因為該證書擴展表示相關私鑰應只用於簽寫證書,而不應該用於 SSL。

證書

在X.509系統中,CA簽發的證書依照X.500的管理,綁定了一個唯一甄別名(DN-Distinguished Name ),可以包含多個欄位和值,還可以支持別名(Alternative Name )。

一個組織受信任的根證書會分發給所有需要用到的PKI系統的員工手上。主流瀏覽器:IE、Netscape/Mozilla,Opera和Safari會預先安裝一部分根證書,這些根證書都是受信任的證書認證機構CA,這樣他們頒發的證書,瀏覽器將可以直接信任。雖然用戶可以刪除或者禁用這些根證書,但事實上,用戶很少這么做。在最新的微軟平台,甚至會在用戶移除了預先安置的根證書後,當用戶再訪問這些被刪除的根證書網站的時候,會自動將這些根證書恢復到信任列表中。

X.509包含了一個證書吊銷列表(CRL-Certificate Revocation List)實施的標準,這在PKI系統中經常被人所忽略。IETF提出的檢查證書有效性的方法是線上證書狀態(OCSP- Online Certificate Status Protocol)。Firefox3 預設就是使用OCSP協定。

證書結構

X.509 v3證書數據結構如下:

Certificate證書

Version 版本

Serial Number序列號

Algorithm ID 算法標識

Issuer 頒發者

Validity 有效期

Not Before 有效起始日期

Not After 有效終止日期

Subject 使用者

Subject Public Key Info 使用者公鑰信息

Public Key Algorithm公鑰算法

Subject Public Key公鑰

Issuer Unique Identifier (Optional) 頒發者唯一標識

Subject Unique Identifier (Optional) 使用者唯一標識

Extensions (Optional) 擴展

...

Certificate Signature Algorithm 證書籤名算法

Certificate Signature 證書籤名

數字簽名

H--Hash計算

E--加密計算

D--解密計算

在簽發者處,首先求出傳遞訊息Info的HASH值,然後用私鑰Private Key對Hash值做加密,然後將傳遞訊息原文Info和經過加密的HASH值一起發給接受者,接受者首先用簽發者的公鑰揭開密碼,然後對收到的Info原文計算HASH值,然後比對是否相對,如果相同,則認證成功。

擴展檔案

.cer, .crt - 通常被用於二進制的DER檔案格式(同於.der), 不過也被用於Base64編碼的檔案 (例如 .pem).

.P7B - 同於 .p7c

.P7C - PKCS#7證書格式,僅僅包含證書和CRL列表信息,沒有私鑰。

.PFX - 同於 .p12

.P12 -PKCS#12檔案, 包含證書(公鑰)和私鑰(受密碼保護),已經完整的證書鏈信。

PKCS#7 是一種將數據加密和簽名(正式名稱是“enveloping”)的技術標準。 它描述數字證書的語法和其他加密訊息——尤其是,數據加密和數字簽名的方法,也包含了算法。但PKCS#7不包含私鑰信息。

PKCS#12 定義了一個用於保存私鑰和對應公鑰證書的檔案格式,並由對稱密鑰加密保護。PKCS#12通常採用PFX,P12作為檔案擴展名。 PKCS#12檔案可以存放多個證書,並由密碼保護,通常用於WINDOWS IIS,也能夠被當作Java Keysotre檔案使用,用於Tomcat,Resign,Weblogic,Jboss等,不能被用於Apache.

證書示例

以下是一個頒發給login.yahoo的X.509證書解碼的案例,檔案的實際大小大約是1KB位元組。這個證書是由GeoTrust(已經被Verisign收購)簽發。所以在簽發者欄目中,可以看到“Equifax Secure Certificate Authority” (這家已經被Geotrust收購,Geotrust所有的證書都由這個根證書籤發)。在使用者(Subject)中包含多條信息,不過最重要的是通用名(Common Name, CN),因為這個部分是用來和網站的域名相匹配的,同時也包含了RSA的公鑰以及Geotrust的簽名,所有的SSL證書都採用SHA1 HASH算法計算特徵值。

Certificate:

Data:

Version: 3 (0x2)

Serial Number: 368716 (0x5a04c)

Signature Algorithm: sha1WithRSAEncryption

Issuer:C=US,O=Equifax,

OU=Equifax Secure Certificate Authority

Validity

Not Before: Jan 4 17:09:06 2006 GMT

Not After : Jan 4 17:09:06 2011 GMT

Subject: C=US, ST=California, L=Santa Clara,

O=Yahoo! Inc., OU=Yahoo, CN=login.yahoo

Subject Public Key Info:

Public Key Algorithm: rsaEncryption

RSA Public Key: (1024 bit)

Modulus (1024 bit):

00:b5:6c:4f:ee:ef:1b:04:5d:be:70:4a:d8:55:1d:

8a:77:0d:c1:45:00:f5:3b:1a:10:dd:d7:f7:bb:7a:

65:54:7f:60:d2:16:bb:bd:12:a5:78:78:d6:b3:50:

4e:ba:17:48:27:7a:22:6f:2a:7c:1d:a2:36:22:d8:

59:a2:ae:3a:0b:d4:d2:1b:8a:0e:5a:89:a9:e4:9a:

ff:db:3f:04:e2:9b:75:c1:8d:c5:8c:05:a1:f3:b5:

92:5e:a1:44:49:19:e4:90:b4:e9:ef:e4:5d:b2:20:

6d:f9:23:76:b8:b2:d4:af:a3:06:f5:9e:03:8f:b8:

82:05:21:11:25:44:3a:80:05

Exponent: 65537 (0x10001)

X509v3 extensions:

X509v3 Key Usage: critical

Digital Signature, Non Repudiation,

Key Encipherment,Data Encipherment

X509v3 Subject Key Identifier:

A0:1E:6E:0C:9B:6E:6A:EB:D2:AE:5A:4A:18:FF:0E:93:

46:1A:D6:32

X509v3 CRL Distribution Points:

URI:http://crl.geotrust/crls/secureca.crl

X509v3 Authority Key Identifier:

keyid:48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:

4F:33:98:90:9F:D4

X509v3 Extended Key Usage:

TLS Web Server Authentication,

TLS Web Client Authentication

50:25:65:10:43:e1:74:83:2f:8f:9c:9e:dc:74:64:4e:71:27:

4e:2a:6e:4a:12:7b:4c:41:2e:61:4a:11:0b:41:a6:b1:52:cb:

13:76:b6:45:e4:8d:d4:00:9a:3b:02:c7:82:29:01:a3:ee:7d:

f7:b9:02:88:9d:3e:c3:1c:e6:3d:d3:90:fc:9c:56:db:19:9d:

ab:a8:03:80:7d:c4:e2:c4:09:33:9e:58:5b:77:37:89:59:a3:

86:8e:a1:df:b3:bb:02:ed:21:62:fb:ba:c2:ba:e8:d4:8f:66:

c1:a5:5f:ad:f9:3f:cf:22:9b:17:57:a0:ca:28:c6:76:03:a4:

c4:e7

為了驗證這個證書,需要用這個證書籤發者的根證書(Geotrust的Equifax Secure Certificate Authority)。由於這個證書是用Geotrust的根證書的私鑰來簽名的,所以我們可以用Geotrust的公鑰來對證書的SHA1哈希值進行解碼,然後驗證解碼後的哈希值是否和證書的哈希值一致。以下是Geotrust根證書的樣例:

Certificate:

Data:

Version: 3 (0x2)

Serial Number: 903804111 (0x35def4cf)

Issuer:C=US,O=Equifax,

OU=Equifax Secure Certificate Authority

Validity

Not Before: Aug 22 16:41:51 1998 GMT

Not After : Aug 22 16:41:51 2018 GMT

Subject:C=US,O=Equifax,

OU=Equifax Secure Certificate Authority

Subject Public Key Info:

Public Key Algorithm: rsaEncryption

RSA Public Key: (1024 bit)

Modulus (1024 bit):

00:c1:5d:b1:58:67:08:62:ee:a0:9a:2d:1f:08:6d:

91:14:68:98:0a:1e:fe:da:04:6f:13:84:62:21:c3:

d1:7c:ce:9f:05:e0:b8:01:f0:4e:34:ec:e2:8a:95:

04:64:ac:f1:6b:53:5f:05:b3:cb:67:80:bf:42:02:

8e:fe:dd:01:09:ec:e1:00:14:4f:fc:fb:f0:0c:dd:

43:ba:5b:2b:e1:1f:80:70:99:15:57:93:16:f1:0f:

97:6a:b7:c2:68:23:1c:cc:4d:59:30:ac:51:1e:3b:

af:2b:d6:ee:63:45:7b:c5:d9:5f:50:d2:e3:50:0f:

3a:88:e7:bf:14:fd:e0:c7:b9

Exponent: 65537 (0x10001)

X509v3 extensions:

X509v3 CRL Distribution Points:

DirName:/C=US/O=Equifax

/OU=Equifax Secure Certificate Authority/CN=CRL1

X509v3 Private Key Usage Period:

Not After: Aug 22 16:41:51 2018 GMT

X509v3 Key Usage:

Certificate Sign, CRL Sign

X509v3 Authority Key Identifier:

keyid:48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:

4F:33:98:90:9F:D4

X509v3 Subject Key Identifier:

48:E6:68:F9:2B:D2:B2:95:D7:47:D8:23:20:10:4F:33:

98:90:9F:D4

X509v3 Basic Constraints:

CA:TRUE

1.2.840.113533.7.65.0:

0...V3.0c....

58:ce:29:ea:fc:f7:de:b5:ce:02:b9:17:b5:85:d1:b9:e3:e0:

95:cc:25:31:0d:00:a6:92:6e:7f:b6:92:63:9e:50:95:d1:9a:

6f:e4:11:de:63:85:6e:98:ee:a8:ff:5a:c8:d3:55:b2:66:71:

57:de:c0:21:eb:3d:2a:a7:23:49:01:04:86:42:7b:fc:ee:7f:

a2:16:52:b5:67:67:d3:40:db:3b:26:58:b2:28:77:3d:ae:14:

77:61:d6:fa:2a:66:27:a0:0d:fa:a7:73:5c:ea:70:f1:94:21:

65:44:5f:fa:fc:ef:29:68:a9:a2:87:79:ef:79:ef:4f:ac:07:

77:38

如果簽發證書的根證書,在瀏覽器的根信任列表中,瀏覽器就會主動識別該證書是安全的,反之,瀏覽器就會提出一個警告。GeoTrust的根證書已經被全球所有主要瀏覽器:Internet Explorer, Netscape ,Mozila ,Opera, Firefox, Safari安裝在預設的信任根證書列表中,GeoTrust簽發的證書被廣泛的信任和接受。

相關搜尋

熱門詞條

聯絡我們