首先,我們得搞清楚什么是數(shù)字證書铁瞒,有什么作用妙色。
數(shù)字證書是在維基百科上是這樣描述的:為通信提供電子認證,用于網(wǎng)絡身份識別慧耍。說白了就是網(wǎng)絡中的身份證身辨,一般用于服務器。
現(xiàn)實中芍碧,一般是網(wǎng)站的服務器向CA機構申請數(shù)字證書煌珊,用于向客戶端(瀏覽器)證明自己的身份。在雙向認證中师枣,客戶端也會申請數(shù)字證書怪瓶,數(shù)字證書就跟你去公安局辦身份證一樣,也是要錢的践美。所以客戶端證書一般很少洗贰,例如銀行給你的U盾里就有客戶端證書。數(shù)字證書在通信中向網(wǎng)絡的一方證明數(shù)字證書持有者的身份陨倡,就像身份證證明你的身份一樣敛滋。
數(shù)字證書的結構(基于 x.509 證書標準):
1 證書格式版本號
2 證書序列號
3 證書簽名算法
4 證書頒發(fā)者
5 證書有效期
6 對象的名稱
7 對象的公開密鑰
8 其它信息
9 證書頒發(fā)機構的數(shù)字簽名 (對前面8項內容進行哈希散列形成固定摘要,加上頒發(fā)者私鑰參數(shù)做參數(shù)兴革,用證書簽名算法最終形成簽名)
可以做個比喻绎晃,數(shù)字證書就如現(xiàn)實生活中的身份證(用于證明持證人身份),CA 機構就是現(xiàn)實整的公安機關(頒發(fā)證件可信度高)杂曲,而證書上的公鑰信息就類似于身份證的照片庶艾,數(shù)字證書的簽名就相當于身份證的章印(證明是公安機關的)擎勘。
申請數(shù)字證書的流程 :
1 申請者(一般是服務器)自己生成申請證書的證書請求和私鑰咱揍,證書請求一般是 cer 文件,里面包含服務器公鑰等信息棚饵。
2 服務器向證書認證機構(權威CA機構)遞交證書請求煤裙。
3 CA 機構核對服務器的證書請求。(核對是物理過程噪漾,很嚴格)
4 CA 核對完畢硼砰,會給服務器頒發(fā)數(shù)字證書server.crt(物理過程)。證書包含公鑰和 CA 簽名等信息欣硼。
5 申請者使用數(shù)字證書
數(shù)字證書的驗證流程:
1 將證書除最后簽名外的所有信息(如證書結構里的8項信息)進行哈希题翰,生成摘要1.
2 對證書最后的數(shù)字簽名,用證書的簽名算法,加上證書頒發(fā)者的公鑰遍愿,最后生成摘要2.(此處頒發(fā)者的公鑰默認是瀏覽器內置的存淫,證書最后的簽名是CA簽的,驗證用的對應是CA的公鑰)
3 對比摘要1和摘要2沼填,若相等桅咆,則證明該數(shù)字證書是合法的機構頒發(fā)的,證書信息也是可信的