linux中加密,解密與用openssl建立CA知識的總結

    首先,咱們要知道,在互聯網上,數據的安全性尤其重要,因此對於數據的加密與解密的重要性就不言而喻了。下面我就來講說加密解密算法與用openssl建立CA數字證書籤署的相關知識。算法


加密,解密算法咱們能夠分爲3種:安全

單向加密(是爲了測試數據完整性的一種算法,抽取數據的數據指紋,也就是特徵碼)服務器

    單向加密有2個特徵ssh

        1,定長輸出   以固定長度輸出的
ide

        2,具備雪崩效應  極小的數據改變也會引起特徵碼的巨大的改變,例以下圖
測試

    wKioL1Pd6NqgKwcdAAAbVk_f_fc713.png

    圖中,我建立一個文件t1,計算出他的特徵碼,
加密

    而後我給文件t1添加一個字符h,而後再計算出特徵碼,你會發現2次的特徵碼徹底不同。
spa


對稱加密:(用於加密任意大小數據塊大小的數據,加密解密雙方使用同一對祕鑰)3d

    經常使用的對稱加密有:3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法等,orm

        對稱加密的特徵:加密解密使用同一口令,把明文分隔成固定大小塊進行加密的

                        缺陷: 每與一個用戶通訊,就要使用一種口令,使祕鑰過於太多

                                    祕鑰在傳輸的過程當中安全性

                

非對稱加密:(加密和解密雙方使用不一樣的祕鑰)

    分爲公鑰與私鑰    其中,公鑰是從私鑰中提取出來的,它是私鑰的一部分(私鑰位數很是長,通常1024位,2048位)而且,公鑰是公開的,你們都能看到,私鑰是本身留存的 。

    

    公鑰加密算法

    RSA:既能加密也能簽名(隨後我會介紹)的一種算法

    DSA: 數據加密算法,只能用於簽名用的,


下面咱們來講說,如今互聯網上經常使用的加密數據的過程:例如host1 與host2通訊

    wKioL1Pd4hiAwUsNAABVLBgN8Qs083.png

  加密過程:

第一步: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生成了那些文件

    wKiom1Pd8LyDBFtsAAAtA-XjB78415.png

    咱們能夠看到:/etc/pki/CA 這個CA的主目錄,下屬的目錄private:用來存放CA自身的私鑰的

    生成私鑰鑰的命令,並保存至/etc/pki/CA/private

    wKiom1Pd8hXzWvSxAAAn2O0fKLQ678.png

紅線的部分爲,保存私鑰的目錄及文件名,且文件名爲cakey.pem(這是配置文件要求的默認文件名)

且生成的文件權限要爲600,或者400.wKioL1Pd9FGBebFbAAAOAUz1ZIs747.png


   2)CA要爲本身簽署一個證書(目的:讓客戶端拿此證書來驗證CA頒發給其餘客戶端簽署的證書是否合法)

    證書中保存的是公鑰信息,自簽署證書的過程會從私鑰中提取所需的公鑰

    自簽署證書的命令以下圖

    7wKiom1Pd96OTMq75AABphecQww8925.png其中:一些劃紅線的命令參數給大家解釋下:

    -new 表示新的請求

    -x509 表示生成自簽署證書

    -key  表示後跟的文件路徑爲私鑰的文件路徑(從私鑰提取公鑰)

    -out  表示存放自簽署證書的位置

    -days 表示該證書的有效期天數,(就像***上的有效期同樣)

看吧生成了自簽署證書(此證書要給每一個通訊的客戶端都發一份,來驗證CA簽署的其餘證書的合法性)

    wKioL1Pd-SiyGHJLAAAO6cJQ_FI854.png



    CA服務器的環境初始化:

    CA要想正常工做還須要2個文件一個是索引文件,另外一個是序列號文件(用來統計用的)

    wKioL1Pd_4TjzG_8AAA53lXf-Cg924.png

   3)每個通訊的客戶端須要作的事情:

        1,要生成一對祕鑰

        咱們以http服務申請證書的過程爲例:

            咱們要在HTTP服務的配置文件所在的目錄建立一個目錄來保存證書和私鑰文件

            wKioL1Pd-w2zugTIAAAO6cJQ_FI918.png

        建立目錄ssl,而且在ssl目錄下建立祕鑰,

        wKioL1Pd---wIzqYAAAj1P7O3RY075.png    


        而後再生成簽署請求,並保存在ssl目錄下(能夠任意目錄存放,用完就能夠丟棄了)

     2,生成證書請求(要想獲得證書不申請,CA怎麼給你簽署呢)

        wKioL1Pd_SbTCcnoAAB_zvACd9A947.png

    

    3 把生成的證書請求發送給CA,請求CA簽署

            問題是怎麼發送呢

            scp /etc/httpd/ssl/httpd.csr CA服務器(IP地址)

            若是是在同一公司內部的話,你可使用ssh基於FTP服務發送請求,在這裏我是在同一主機上作的實驗,因此不用發送啦,在下一個博客裏我會介紹ssh的相關知識

            

 4)CA先驗證申請者的信息,再簽署證書,簽署完成後返回給客戶端。

    CA簽署證書的命令以下:

    wKiom1PeAU6xkUn-AAAuZ-vrwIY043.png

        

在/etc/httpd/ssl/下wKiom1PeAejyMCy-AAAWH4Dmwas209.png


自此建立CA服務的流程基本如上圖的過程啦。

相關文章
相關標籤/搜索