一: 加密,與解密:
這裏指的加密和解密是對網絡中數據報文傳輸來講的,在現在日益複雜的網絡環境中,對數據傳輸做安全考慮是很有必要性的。本文將介紹四種加密的實現方法。
二:加密的分類:對稱加密、公鑰加密、單向加密、數字簽名。
1.對稱加密:通信雙方使用同一個密鑰,這個密鑰可以加密和解密,也成單鑰加密。 這種加密方式加密傳輸速度比較快,但是密鑰的交換比較難。因爲一旦密鑰丟失則毫無安全性可言因此它還稱爲私鑰加密。
2.公鑰加密:通信雙方都持有一對密鑰(公鑰和私鑰)比如A和B雙方通信,
A用對方的公鑰鑰加密發送給B只需要用自己的私鑰對其解密即可。 這種加密方式就解決了密鑰分發困難,因爲這種密鑰是成對的,只需要公開自己的公鑰,保管好自己的私鑰即可。
3.單向加密:單向加密是基於某種算法和工具對數據進行加密,並提取特徵碼附加語元數據後邊。單向加密是不可逆的具有雪崩效應,因此它能夠實現檢測數據的完整性。它並不依賴於密鑰
4.數字簽名:數字簽名是結合上述 三種方法結合起來使用的。
注意:以上四種方法存在一個問題,那就是密鑰的交換比較困難,比如A和B通信,A怎麼確保給自己的一定是B的密鑰呢?此時就引入了CA。
三:CA服務器: CA是PKI系統中通信雙方都信任的實體,被稱爲可信第三方(Trusted ThirdParty,簡稱TTP)。
CA簽發證書格式:
:
但是存在一個問題,就是任何人都可以產生一對公私密鑰對,並聲稱自己就是LOIS CA,然後簽發一張自簽名證書、並通過網絡隨意傳播。這顯然就不行,那麼就需要有一個CA給CA自簽發證書格式如下:
但是這樣第一個CA怎麼來的呢?這個CA是由可信途徑獲得。
四.結合CA詳解A與B通信中數據包的加密過程:首先看下圖:
從圖中我們不難看出:首先A和B都需要從CA那裏註冊,CA爲A和B簽發證書,這樣解決了我們上邊提到的顧慮,現在要實現數字簽名,則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根據節點提交的serial和subject信息來驗正與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 下許多子命令需要的話可以查閱相關資料。