X.509是一種非常通用的證書格式傅联。所有的證書都符合ITU-T X.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語法進(jìn)行編碼。
前使用最廣泛的標(biāo)準(zhǔn)為ITU和ISO聯(lián)合制定的X.509的 v3版本規(guī)范 (RFC5280), 其中定義了如下證書信息域:
? ? 版本號(hào)(Version Number):規(guī)范的版本號(hào)捻艳,目前為版本3驾窟,值為0x2;
? ? 序列號(hào)(Serial Number):由CA維護(hù)的為它所發(fā)的每個(gè)證書分配的一的列號(hào)认轨,用來追蹤和撤銷證書绅络。只要擁有簽發(fā)者信息和序列號(hào),就可以唯一標(biāo)識(shí)一個(gè)證書,最大不能過20個(gè)字節(jié)恩急;
? ? 簽名算法(Signature Algorithm):數(shù)字簽名所采用的算法杉畜,如:
? ? ? ? sha256-with-RSA-Encryption
? ? ? ? ccdsa-with-SHA2S6;
? ? 頒發(fā)者(Issuer):發(fā)證書單位的標(biāo)識(shí)信息衷恭,如 ” C=CN此叠,ST=Beijing, L=Beijing, O=org.example.com,CN=ca.org随珠。example.com ”灭袁;
? ? 有效期(Validity): 證書的有效期很,包括起止時(shí)間窗看。
? ? 主體(Subject) : 證書擁有者的標(biāo)識(shí)信息(Distinguished Name)茸歧,如:" C=CN,ST=Beijing, L=Beijing, CN=person.org.example.com”烤芦;
? ? 主體的公鑰信息(SubJect Public Key Info):所保護(hù)的公鑰相關(guān)的信息:
? ? ? ? 公鑰算法 (Public Key Algorithm)公鑰采用的算法;
? ? ? ? 主體公鑰(Subject Unique Identifier):公鑰的內(nèi)容析校。
? ? 頒發(fā)者唯一號(hào)(Issuer Unique Identifier):代表頒發(fā)者的唯一信息构罗,僅2、3版本支持智玻,可選遂唧;
? ? 主體唯一號(hào)(Subject Unique Identifier):代表擁有證書實(shí)體的唯一信息,僅2吊奢,3版本支持盖彭,可選:
? ? 擴(kuò)展(Extensions,可選): 可選的一些擴(kuò)展页滚。中可能包括:
? ? ? ? Subject Key Identifier:實(shí)體的秘鑰標(biāo)識(shí)符召边,區(qū)分實(shí)體的多對(duì)秘鑰;
? ? ? ? Basic Constraints:一指明是否屬于CA;
? ? ? ? Authority Key Identifier:證書頒發(fā)者的公鑰標(biāo)識(shí)符裹驰;
? ? ? ? CRL Distribution Points: 撤銷文件的頒發(fā)地址隧熙;
? ? ? ? Key Usage:證書的用途或功能信息。
此外幻林,證書的頒發(fā)者還需要對(duì)證書內(nèi)容利用自己的私鑰添加簽名贞盯, 以防止別人對(duì)證書的內(nèi)容進(jìn)行篡改。
X.509規(guī)范中一般推薦使用PEM(Privacy Enhanced Mail)格式來存儲(chǔ)證書相關(guān)的文件沪饺。證書文件的文件名后綴一般為 .crt 或 .cer 躏敢。對(duì)應(yīng)私鑰文件的文件名后綴一般為 .key。證書請(qǐng)求文件的文件名后綴為 .csr 整葡。有時(shí)候也統(tǒng)一用pem作為文件名后綴件余。
PEM格式采用文本方式進(jìn)行存儲(chǔ)。一般包括首尾標(biāo)記和內(nèi)容塊,內(nèi)容塊采用Base64進(jìn)行編碼蛾扇。
編碼格式總結(jié):
? ? X.509 DER(Distinguished Encoding Rules)編碼攘烛,后綴為:.der .cer .crt
? ? X.509 BASE64編碼(PEM格式),后綴為:.pem .cer .crt
證書直接是可以有信任關(guān)系的, 通過一個(gè)證書可以證明另一個(gè)證書也是真實(shí)可信的. 實(shí)際上镀首,證書之間的信任關(guān)系坟漱,是可以嵌套的。比如更哄,C 信任 A1芋齿,A1 信任 A2,A2 信任 A3…這個(gè)叫做證書的信任鏈成翩。只要你信任鏈上的頭一個(gè)證書觅捆,那后續(xù)的證書,都是可以信任滴麻敌。
假設(shè) C 證書信任 A 和 B栅炒;然后 A 信任 A1 和 A2;B 信任 B1 和 B2术羔。則它們之間赢赊,構(gòu)成如下的一個(gè)樹形關(guān)系(一個(gè)倒立的樹)。
處于最頂上的樹根位置的那個(gè)證書级历,就是“根證書”释移。除了根證書,其它證書都要依靠上一級(jí)的證書寥殖,來證明自己玩讳。那誰來證明“根證書”可靠捏?實(shí)際上嚼贡,根證書自己證明自己是可靠滴(或者換句話說熏纯,根證書是不需要被證明滴)。
?聰明的同學(xué)此刻應(yīng)該意識(shí)到了:根證書是整個(gè)證書體系安全的根本粤策。所以豆巨,如果某個(gè)證書體系中,根證書出了問題(不再可信了)掐场,那么所有被根證書所信任的其它證書往扔,也就不再可信了。