首先,咱們要知道,在互聯網上,數據的安全性尤其重要,因此對於數據的加密與解密的重要性就不言而喻了。下面我就來講說加密解密算法與用openssl建立CA數字證書籤署的相關知識。算法
加密,解密算法咱們能夠分爲3種:安全
單向加密(是爲了測試數據完整性的一種算法,抽取數據的數據指紋,也就是特徵碼)服務器
單向加密有2個特徵ssh
1,定長輸出 以固定長度輸出的
ide
2,具備雪崩效應 極小的數據改變也會引起特徵碼的巨大的改變,例以下圖
測試
圖中,我建立一個文件t1,計算出他的特徵碼,
加密
而後我給文件t1添加一個字符h,而後再計算出特徵碼,你會發現2次的特徵碼徹底不同。
spa
對稱加密:(用於加密任意大小數據塊大小的數據,加密解密雙方使用同一對祕鑰)3d
經常使用的對稱加密有:3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法等,orm
對稱加密的特徵:加密解密使用同一口令,把明文分隔成固定大小塊進行加密的
缺陷: 每與一個用戶通訊,就要使用一種口令,使祕鑰過於太多
祕鑰在傳輸的過程當中安全性
非對稱加密:(加密和解密雙方使用不一樣的祕鑰)
分爲公鑰與私鑰 其中,公鑰是從私鑰中提取出來的,它是私鑰的一部分(私鑰位數很是長,通常1024位,2048位)而且,公鑰是公開的,你們都能看到,私鑰是本身留存的 。
公鑰加密算法
RSA:既能加密也能簽名(隨後我會介紹)的一種算法
DSA: 數據加密算法,只能用於簽名用的,
下面咱們來講說,如今互聯網上經常使用的加密數據的過程:例如host1 與host2通訊
加密過程:
第一步:host1用單向加密算法計算出數據data的特徵碼(數據指紋)放在數據後面,
第二步:host1用本身的私鑰加密 數據特徵碼,並放數據的後面
第三步:host1生成一對祕鑰,採用對稱加密對加密過的特徵碼和數據進行加密
第四步:host1用host2的公鑰再對整個數據加密,放在數據的後面
第五步: 把通過多重加密的數據發送給host2
解密過程:
第一步: host2 接收到host1 發來的數據,就用本身的私鑰去解密,成功解密,就證實這個數據的確是發給本身的沒錯,
第二步:host2 用host1生成的密碼解密數據,獲得加密的特徵碼與加密的數據
第三步; host2 還要用host1的公鑰解密,來驗證是不是host1發出的這個數據的,用來驗證數據的來源是不是與本身通訊的用戶
第四步:host2 用host1單向加密的算法來解密加密的數據的特徵碼
第五步:比較得出的特徵碼是否一致,一致則說明數據時完整的,沒被修改過。
加密解密的過程咱們說完了,那麼就來講說,雙方通訊室基於什麼基礎呢?爲何host1就相信host2的公鑰就是host2的,有什麼判斷依據呢?有,那就是CA(至關於***頒發機構的,用來證實身份的合法性的)
CA 又稱CA機構,即證書受權中心(Certificate Authority ),或稱證書受權機構,做爲電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。
CA的功能:簽發數字證書、管理下級審覈註冊機構、接受下級審覈註冊機構的業務申請、維護和管理全部證書目錄服務、向密鑰管理中心申請密鑰、實體鑑別密鑰器的管理,等等。
下面來介紹CA的工做機制,
雙方要想達到互信通訊怎麼辦呢?
那就雙方各須要一個數字證書,證實本身的身份
那麼這個數字證書怎麼來的呢?
數字證書有CA簽署的(CA用本身的私鑰加密數字證書,用CA的公鑰驗證是不是CA簽署的)
爲何是CA簽署呢?
由於CA是現在互聯網公認的惟一的數字證書籤署機構
首先,要想獲得證書咱們要先申請,再經CA簽署認證後,你就擁有在互聯網上通訊的合法性了。
CA很重要,那麼咱們來講說怎麼用openssl建立CA的吧
openssl建立私有CA的通常過程:
1)CA須要用爲自身生成一對祕鑰
先看下openssl生成了那些文件
咱們能夠看到:/etc/pki/CA 這個CA的主目錄,下屬的目錄private:用來存放CA自身的私鑰的
生成私鑰鑰的命令,並保存至/etc/pki/CA/private
紅線的部分爲,保存私鑰的目錄及文件名,且文件名爲cakey.pem(這是配置文件要求的默認文件名)
2)CA要爲本身簽署一個證書(目的:讓客戶端拿此證書來驗證CA頒發給其餘客戶端簽署的證書是否合法)
證書中保存的是公鑰信息,自簽署證書的過程會從私鑰中提取所需的公鑰
自簽署證書的命令以下圖
-new 表示新的請求
-x509 表示生成自簽署證書
-key 表示後跟的文件路徑爲私鑰的文件路徑(從私鑰提取公鑰)
-out 表示存放自簽署證書的位置
-days 表示該證書的有效期天數,(就像***上的有效期同樣)
看吧生成了自簽署證書(此證書要給每一個通訊的客戶端都發一份,來驗證CA簽署的其餘證書的合法性)
CA服務器的環境初始化:
CA要想正常工做還須要2個文件一個是索引文件,另外一個是序列號文件(用來統計用的)
3)每個通訊的客戶端須要作的事情:
1,要生成一對祕鑰
咱們以http服務申請證書的過程爲例:
咱們要在HTTP服務的配置文件所在的目錄建立一個目錄來保存證書和私鑰文件
建立目錄ssl,而且在ssl目錄下建立祕鑰,
而後再生成簽署請求,並保存在ssl目錄下(能夠任意目錄存放,用完就能夠丟棄了)
2,生成證書請求(要想獲得證書不申請,CA怎麼給你簽署呢)
3 把生成的證書請求發送給CA,請求CA簽署
問題是怎麼發送呢
scp /etc/httpd/ssl/httpd.csr CA服務器(IP地址)
若是是在同一公司內部的話,你可使用ssh基於FTP服務發送請求,在這裏我是在同一主機上作的實驗,因此不用發送啦,在下一個博客裏我會介紹ssh的相關知識
4)CA先驗證申請者的信息,再簽署證書,簽署完成後返回給客戶端。
CA簽署證書的命令以下:
自此建立CA服務的流程基本如上圖的過程啦。