在認證方面,經常會出現這樣幾個詞:ca、證書、pki、x.509等等,每次一看到這些詞就頭大,今天我試著將這幾個詞理一下。
1、a要與b安全通訊,現在a需要知道跟它現在通訊的到底是b還是別人,也就是說a並不信任b
2、b要向a出示自己的證書,然後b說這是我的證書,簽字的單位(認證單位)是c單位。
3、那麼a檢視自己的信任域,看看自己到底信不信任c單位,假設不信任c單位。
4、a向c單位請求檢視證書,c將自己的證書發給a,自己的證書由d單位簽發。
5、a接著檢視自己的信任域,看看到底信不信任d單位,如果不信任,重複4,如果信任,那麼ok,我信任了d單位,就相當於信任了d單位下所有的子節點及子節點簽發的證書。
可以很明顯的看出,這種關係構成了一種信任鏈。這個很重要。
在認證過程中,最重要的互動手段就是證書,證書的作用是將公鑰與安全實體做繫結,繫結的動作由簽發單位完成,在公鑰密碼體制中,當alice希望和bob通訊時,為了防止別人知道通訊內容,需要使用bob的公鑰對訊息加密後,通過不安全通道到達bob端,bob通過自己的私鑰對訊息解密才能看到訊息的內容。那麼問題來了?alice怎麼得到bob的公鑰呢?一種很顯然的方法是bob建立乙個web站點,然後bob將自己的公鑰放在站點上,然後公開給所有人。
這種做法有兩個弊端,一,不是所有人都有能力搭建web站點的;二,bob站點的內容很容易篡改,而bob並不知道。比如,cray篡改了bob網頁,將公鑰變成了cray的公鑰,然後alice向bob傳送訊息時,cray攔截了,因為alice是通過真實的cray的公鑰加密的訊息,然後cray可以解密訊息,看到內容,然後cray可以修改內容後,然後使用真實的bob公鑰向bob傳送訊息,這就是所謂的中間人攻擊。
這種情況發生的根本原因在於alice無法證明,所獲取到的公鑰到底是不是bob的。如果有個網路公安局給bob發個身份證就好啦,所幸的是,人們正式這樣做的。這個「身份證」就是所謂的證書。
這個證書中應該包含如下資訊:單位名稱、單位公鑰、公鑰演算法、過期時間、簽發單位、簽名演算法等。
下面貼乙個豆瓣的證書。
證書中欄位含義如下:
版本:就是版本號
序列號:簽發單位簽發的證書的唯一標識,簽發單位+序列號可以唯一確定一張表示符
簽名演算法:sha256是指證書的hash演算法,rsa是公鑰簽名演算法
簽名hash演算法:
頒發者:就是簽發單位
有效期:
到: 使用者:*.douban.com,即豆瓣網域名稱下所有的站點
公鑰:豆瓣的公鑰
公鑰引數:額,不知道啥意思
接下來的都是些可選項了
crl分發點:證書撤銷鍊錶,即當證書撤銷之後,將會在此處進行顯示
指紋演算法:對證書整體的資料進行hash,防止證書被篡改
指紋:hash後的結果
在證書路徑中可以看出,簽發單位是geotrust ssl ca,而給geotrust ssl ca簽發的是geo trust global ca。
ca是certification center,也就是上面所提到的簽發單位。第一部分也說了,所謂的信任其實就是乙個鏈狀結構,我信任了根節點,那麼以該節點為根的所有子樹的證書,我都信任。
pki是啥?public key infracture(公鑰基礎設施),這個可能是最抽象的了,乙個完整的pki系統必須具備權威認證機構(ca)、數字證書庫、金鑰備份及恢復系統、證書作廢系統和應用介面(api)等基本組成部分,也就是乙個系統。並沒有說乙個單位叫做pki的。
pki所做的事情是提供一種方法將所有這些部件有序組織起來,並定義了各種文件和協議的標準。
x.509是證書的一種格式,比如說我定義了一種證書,那別人如何解析呢?也就是說需要一種統一的規範的證書格式,大家都知道如何去填寫乙個證書,以及如何解析乙個證書
公鑰 私鑰 公鑰私鑰
小明想寫一封情書給小紅,但是這封情書是很私密的東西,小明不想讓除了小紅之外的其他人知道。小明看過flydean的部落格,他知道了有個對稱加密的好東西。於是小明想,如果我將情書使用對稱加密演算法進行加密,然後再把加密後的情書傳給小紅豈不就是安全了?但是小明又仔細思考了一下,發現了乙個問題,對稱加密演算...
檢視本機ssh公鑰,生成公鑰
檢視ssh公鑰方法 1.通過命令視窗 a.開啟你的git bash 視窗 b.進入.ssh目錄 cd ssh c.找到id rsa.pub檔案 lsd.檢視公鑰 cat id rsa.pub或者vim id rsa.pub如圖 2.或者你也可以直接輸入命令 cat ssh id rsa.pub 如圖...
檢視本機ssh公鑰,生成公鑰
原 檢視ssh公鑰方法 1.通過命令視窗 a.開啟你的git bash 視窗 b.進入.ssh目錄 cd ssh c.找到id rsa.pub檔案 lsd.檢視公鑰 cat id rsa.pub 或者vim id rsa.pub 如圖 2.或者你也可以直接輸入命令 cat ssh id rsa.pu...