數字證書和咱們平時見到的紙質證書同樣,由一些通用的元素構成:html
1. 證書的名稱git
2. 頒發證書的機構網絡
3. 證書發給誰加密
4. 證書生效時間(有些證書還有失效時間)htm
5. 簽名blog
判斷一個證書是否可信:hash
1. 首先看發證機構是否值得信賴(好比微軟頒發的數字證書和一個不知名的機構頒發的證書,你更信賴誰?)it
2. 看是否處在有效期im
3. 看數字簽名,數字簽名必須是真的,不然一切都是假的。數字簽名是驗明證書真僞的惟一憑證。db
簽名過程,以微軟爲例:
1. 微軟持有私鑰,另外有配套的公鑰。私鑰能夠理解爲鑰匙,公鑰爲鎖。私鑰是保密的,微軟本身保存,公鑰對全網絡公開。
2. 微軟對證書上的內容進行hash運算,得出摘要(digest),摘要是固定長度的一串字符
3. 摘要用私鑰進行加密,就獲得了簽名
4. 將簽名附在證書內容下面
解密過程:
1. 拿到證書對簽名使用公鑰解密,獲得證書摘要
2. 對比解密出來的摘要和簽名時的摘要是同樣的,證實證書是微軟簽發的,且內容沒被篡改,由於任何對內容的篡改(哪怕只改一個bit位)解密出來的摘要都會和加密時大不相同
不幸的是,萬一有人替換了你手中的公鑰,再使用配對的私鑰簽名給你發消息,就能夠欺騙你了。爲了防範這種狀況,就有了"證書中心"(certificate authority,簡稱CA),CA使用本身的私鑰再次對證書進行簽名來保證咱們能夠拿到真正的公鑰。
read more: 數字簽名是什麼 http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html