加密,解密詳解及openssl自建CA服務器

 一: 加密,與解密:

                這裏指的加密和解密是對網絡中數據報文傳輸來講的,在現在日益複雜的網絡環境中,對數據傳輸做安全考慮是很有必要性的。本文將介紹四種加密的實現方法。

二:加密的分類:對稱加密、公鑰加密、單向加密、數字簽名。

            1.對稱加密:通信雙方使用同一個密鑰,這個密鑰可以加密和解密,也成單鑰加密。    這種加密方式加密傳輸速度比較快,但是密鑰的交換比較難。因爲一旦密鑰丟失則毫無安全性可言因此它還稱爲私鑰加密。

            2.公鑰加密:通信雙方都持有一對密鑰(公鑰和私鑰)比如AB雙方通信,

A用對方的公鑰鑰加密發送給B只需要用自己的私鑰對其解密即可。  這種加密方式就解決了密鑰分發困難,因爲這種密鑰是成對的,只需要公開自己的公鑰,保管好自己的私鑰即可。

            3.單向加密:單向加密是基於某種算法和工具對數據進行加密,並提取特徵碼附加語元數據後邊。單向加密是不可逆的具有雪崩效應,因此它能夠實現檢測數據的完整性。它並不依賴於密鑰

            4.數字簽名:數字簽名是結合上述 三種方法結合起來使用的。

        注意:以上四種方法存在一個問題,那就是密鑰的交換比較困難,比如AB通信,A怎麼確保給自己的一定是B的密鑰呢?此時就引入了CA

三:CA服務器: CAPKI系統中通信雙方都信任的實體,被稱爲可信第三方(Trusted ThirdParty,簡稱TTP)。

   CA簽發證書格式:

  wKiom1PeFeXhDm-sAACFoIG16Q4159.jpg

但是存在一個問題,就是任何人都可以產生一對公私密鑰對,並聲稱自己就是LOIS CA,然後簽發一張自簽名證書、並通過網絡隨意傳播。這顯然就不行,那麼就需要有一個CACA自簽發證書格式如下:

       

          wKiom1PeFlXRvG1HAACV0lBC484180.jpg

但是這樣第一個CA怎麼來的呢?這個CA是由可信途徑獲得。

.結合CA詳解AB通信中數據包的加密過程:首先看下圖:

    wKioL1PeF_qgKhR_AAFPb6x88Qk904.jpg

 

從圖中我們不難看出:首先AB都需要從CA那裏註冊,CAAB簽發證書,這樣解決了我們上邊提到的顧慮,現在要實現數字簽名,則B需要對數據報進行單向加密提取特徵碼1 並放於數據報尾部,再次利用對稱加密(即用自己的密鑰對數據報和特徵碼都進行加密得到特徵碼2),最後B再將其作爲整體 對其進行公鑰加密發送給A

A在得到數據報的時候先用自己的私鑰解密,再用B給的密鑰進行解密,最後對數據進行再一次單向加密的方法得出特徵碼3,比較特徵碼與特徵碼1來確保數據的完整性。


.CA服務器的應用:我們藉助工具OpenSSL來完成CA服務器的搭建,關於OpenSSL SSL我們本篇不做介紹,大家可以從網上查看其相關講解。

   1.建立CA服務器:

     1.1生成密鑰:# (umask 077; openssl genrsa-out /etc/pki/CA/private/cakey.pem 2048)

     其中-out:生成密鑰保存的文件位置

    1.2自簽證書:# opensslreq -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem-days 3655

     1.3初始化工作環境:

              # touch/etc/pki/CA/{index.txt,serial}//創建保存註冊信息的索引,與序號

                       # echo 01 > /etc/pki/CA/serial      //爲其自己創建第一個證書序號爲01開始

    注意:初始化操作只是在第一次創建CA服務器的時候才進行的步驟。

   2.節點申請證書:我們以http 服務器申請證書爲例

     1.節點生成請求:

     1.1節點生成密鑰對兒:#(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) 

     1.2 生成簽署證書請求:#openssl req -new -key /etc/httpd/ssl/httpd.key -out  /etc/httpd/ssl/httpd.csr

     1.3把生成的簽署證書請求發送到CA服務器;這裏用到scp命令。我們這裏用本機做測試 所以就不用複製了,直接簽發證書即可。

 3.CA證書籤署

    1.驗證證書請求信息;

    2.簽署證書

    3.將證書發給http服務器

 4.吊銷證書:我們仍以http 服務器測試

   1.節點首先查看自己的證書編號:

[root@guzenghui httpd]# openssl x509 -in/etc/httpd   /ssl/httpd.crt -noout -serial  -subject

serial=01

subject=/C=CN/ST=henan/O=ops/CN=guzenghui        

    2.CA根據節點提交的serialsubject信息來驗正與index.txt文件中的信息是否一致;

      如果一直將其吊銷

   3.吊銷證書# opensslca -revoke /etc/pki/CA/newcerts/SERIAL.pem

           這裏的SERIAL指的是你查出自己的證書所對應的編號如:

       [root@guzenghui ssl]# cd/etc/pki/CA/newcerts/

       [root@guzenghui newcerts]# ls

       01.pem

    4.生成吊銷列表編號(如果是第一次吊銷):

       [root@guzenghui CA]# echo 00 >/etc/pki/CA/crlnumber  

    5.更新證書吊銷列表   

       [root@guzenghui crl]# openssl ca -gencrl -out/etc/pki/CA/crl/thisca.crl

       Using configuration from/etc/pki/tls/openssl.cnf

至此,我們對CA 的應用已經講解基本清楚,關於openssl 下許多子命令需要的話可以查閱相關資料。





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