本文主要講述ssl以及使用openssl創建CA,DNS服務器的搭建
一.數據在互聯網上傳輸存在各種各樣的分險,數據在傳輸的過程中可能會被篡改,被截取等,于是就不得不解決這些安全問題,為了解決這些問題,ssl協議也就誕生了,ssl(Secure Socket Layer),首先,它是一中協議,專用于對數據進行加密與解密,是一個應用層協議,該協議提供了兩個基本服務:鑒別與保密。而Linux中的openssl則是該協議的開源實現,在套件中包括許多加密與解密的算法,使得用戶能夠利用該套件來實現一些安全機制,其中加密與解密算法就是其核心。
1.常見的加密與解密算法
(1)對稱加密:加密與解密使用同一個密鑰,常見的算法有:
DES,3DES,AES,Blowfish,Twofish,RC6,CAST5 |
對稱加密的特點:
加密與解密使用同一個密鑰,一旦密鑰被竊取,數據的安全性就無從得到保障 |
把數據分塊,然后逐個進行加密 |
對稱加密的缺點:
每一份數據的傳輸都需要一個密鑰,會導致密鑰過多,密鑰的分發就會變得十分的困難 |
(2)非對稱加密:加密與解密使用不同的密鑰,使用者需要實現生成兩密鑰,一個是公開的,叫做公鑰,另一個是不公開的,叫做私鑰,使用私鑰加密的數據中能用公鑰解密,密鑰成對出現使用。常見的算法有:
RSA ,DSA |
非對稱加密的特點:
加密與解密使用不同的密鑰 |
非對稱加密的缺點:
密鑰過長,加密與解密的過程消耗資源過大 |
(3)單向散列加密:只能用于加密,用于提取數據的特征碼,常見的算法有:
MD5,SHA1,SHA256,SHA384,SHA512,CRC32 |
單向散列加密的特點:
定長輸出:不管加密多大的數據,其特征碼的長度是固定的位數 |
不可逆:得到特征碼無法還原其原始數據 |
雪崩效應:數據的微小改變,也會對加密結果帶來巨大的影響 |
單向散列加密的缺點:
只能用于加密。無法用于解密 |
2.密鑰交換
從加密與解密的方式中可以看出,要完成加密與解密的過程,依賴于密鑰交換,而密鑰交換的方式有兩種
(1)公鑰加密:將公鑰加密后發送給通信的另一方,但是如果一旦被別人截獲了,那后續的整個通信過程全都會癱瘓,因此這種方式不常用。
(2)DH:通信的雙方共有一些參數,共同協定一個加密算法,通過雙方所擁有的參數的交換,再加上協商的算法就能得到密鑰。
3.通過以上幾種加密方式,為了實現通信雙方的身份認證,信息完整性的保證,就需要將幾種加密方式結合起來,用非對稱加密方式來實現身份認證,使用單向散列加密來實現數據完整性的檢驗,于是一次完整的通信過程為:
發送方:
(1)先提取數據的特征碼,獲取源數據的hash值 |
(2)使用私鑰加密特征碼 |
(3)生成臨時密鑰,并使用此臨時密鑰加密數據 |
(4)使用對方的公鑰加密臨時密鑰并附在數據的后方 |
接受方:
(1)使用私鑰解密,獲得密鑰 |
(2)使用臨時密鑰獲得數據的特征碼 |
(3)使用發送方的公鑰解密特征碼 |
(4使用單向散列加密數據與解密來的數據做比較 |
5.數字證書
從上述的過程中可以看出,通信過程中依賴于對方的公鑰,因此需要一個保證公鑰安全的方法,而實現這種方法的策略就是CA,CA就是安全證書的頒發機構,所以CA的實現過程為:
在證書簽署端:
(1)創建私鑰文件:(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) |
(2)創建自簽證書 openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem |
(3)創建輔助文件:touch /etc/pki/CA/index.txt ; echo 01 > /etc/pki/CA/serial |
在需要申請證書端:
(1)創建私鑰文件:(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) |
(2)創建證書簽署請求: openssl req -new -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem |
最后將簽署請求發送到簽署端,并由簽署端來簽署證書:
openssl ca in /path/to/cacertfile -out /path/to/crtfile -days 360 |
注意:創建自簽證書和創建證書簽署請求中的信息要一致
二.DNS
DNS:Domain Name System,是一個應用層協議,其作用是實現從FQDN(Full Qualified Domain Name)到IP地址的轉換,DNS系統也是一個分布式的數據庫系統。
1.DNS是從上到小分層的組織形式,從根開始,然后是頂級域,二級域等等,組織方式如下圖:
2.一次查詢請求的過程
(1)客戶端發出請求 |
(2)檢查本地hosts文件中是否有對應的主機名和ip的記錄,若有則根據此文件中的記錄的ip進行通信 |
(3)若沒有,則向DNS服務器發出請求,服務器先查詢本地緩存 |
(4)若緩存沒命中,則DNS服務器向互聯網上的服務器發出查詢 |
3.DNS的查詢方式:
遞歸查詢:只發出一次請求,當收到應答時就為最終答案 |
迭代查詢:需要發出多次請求,每發出一次請求就能收到一個中間答案,最終的答案依賴于次中間答案 |
4.DNS服務器類型:
負責解析域:主DNS服務器(負責解析收到的查詢請求)和從DNS服務器 |
不負責解析域:緩存名稱服務器 |
5.查詢答案:
肯定答案:DNS服務器中有查詢請求中的條目 |
否定答案:DNS服務器中沒有查詢請求對應的條目 |
權威答案:由負責解析此域的主DNS直接返回的答案 |
非權威答案:有緩存服務器返回的答案 |
6.主-輔DNS服務器:
主DNS服務器:維護所負責解析的域數據庫的那臺服務器;讀寫操作均可進行; |
從DNS服務器:從主DNS服務器那里或其它的從DNS服務器那里“復制”一份解析庫;但只能進行讀操作; |
從DNS服務器從主DNS復制數據的實施:
序列號:serial,當此值發生改變時就說明主DNS服務器的內容發生改變 |
刷新時間間隔:refresh,從服務器多長時間向主DNS服務器同步數據 |
重試時間間隔:retry,當無法從主服務器同步數據后的重試時間 |
過期時長:expire,當從服務器一直無法向主服務器同步數據后,放棄重試的時間 |
7.區域傳送:
全量傳送:axfr, 傳送整個數據庫 |
增量傳送:ixfr, 僅傳送改變的數據 |
8.區域數據庫:記錄了次服務器負責解析的域的信息
資源記錄類型有:
SOA(Start Of Authority):起始授權記錄,一個區域只能有一條該記錄 |
NS(Name Service):域名服務記錄,一個區域解析庫可以有多個NS記錄;其中一個為主的; |
A(Address):記錄了FQDN到IP地址的對應條目 |
AAAA:地址記錄, FQDN到IPv6對應的條目; |
CNAME(Canonical Name):別名記錄; |
PTR(Pointer):實現IP到FQDN的記錄 |
MX(Mail eXchanger):郵件交換器,用0-99表示優先級,數字越小優先級越高; |
9.在CentOS中搭建DNS服務器
(1)安裝bind及其工具包
yum -y install bind bind-utils bind-libs |
(2)配置一個正向域為test.com
a.編輯主配置文件:
b.在/var/named/下創建解析庫文件
正向解析庫文件為:vim /var/named/magedu.com
c.在/var/named下面創建反向解析庫文件
d.檢查配置文件的語法,并重載服,即可完成正向和反向區域的解析。測試結果為
清晰易懂~閱讀起來很順。能再深入一下會更好。
繼續加油~