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

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


加密,解密算法我們可以分爲3種:

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

    單向加密有2個特徵

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

        2,具有雪崩效應  極小的數據改變也會引發特徵碼的巨大的改變,例如下圖

    wKioL1Pd6NqgKwcdAAAbVk_f_fc713.png

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

    然後我給文件t1添加一個字符h,然後再計算出特徵碼,你會發現2次的特徵碼完全不一樣。


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

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

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

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

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

                

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

    分爲公鑰與私鑰    其中,公鑰是從私鑰中提取出來的,它是私鑰的一部分(私鑰位數非常長,一般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服務的流程基本如上圖的過程啦。




    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章