1.OpenSSL—就是在SSL協定Linux主機上實作的一個軟體,進而完成SSL的應用
2.NCIST 資料安全性法則:
(1)保密性。包括:資料保密性、隐私性
(2)完整性。包括:資料完整性、系統完整性
(3)可用性
3.加密算法
1.對稱加密
特性:
(1)加密和解密使用同一個密鑰。主要用于資料加密。
(2)将明文分割成固定大小的塊,逐個進行加密。而非加密整個檔案
依賴于:算法和密鑰。安全性依賴于密鑰,而非算法。
常見對稱加密算法:
DES:Data Encryption Standard,使用56bits的密鑰
3DES:就是對DES執行3輪
AES:Advanced Encryption Standard,采用(128bits,192bits,256bits)變化的密鑰長度。(最常用的)
Blowfish
Twofish
IDEA
RC6
CAST5
缺陷:
1.密鑰過多(當與更多的主機進行密鑰通信時,針對不同的主機就會采用不同的密鑰)
2.密鑰分發
2.非對稱加密,即公鑰加密(其密鑰是成對兒出現)
密鑰對兒:私鑰和公鑰
私鑰:僅允許個人使用,secret key
公鑰:公開給所有人使用,public key。(公鑰從私鑰中提取而來,建立時隻需建立私鑰即可,另外使用公鑰加密的資料,隻能使用此公鑰配對兒的私鑰解密;反之亦然)
特性:
1.密鑰長度較大,例如:512bits,2048bits
2.加密、解密分别使用密鑰對兒中的密鑰相對進行
3.常用于數字簽名和密鑰交換
用處:
1.身份認證:私鑰擁有者用自己的私鑰加密的資料,隻要用其公鑰能解密,即可認證其身份。
2.密鑰交換:與被通信方通信之前,首先擷取到對方的公鑰,自己生成一個加密密碼,用對方的公鑰加密,并發送給對方。
不能用來加密資料的原因:
公鑰加密算法長度太長,而資料一般很大,是以加密效率極低,僅用于加密密碼
常用的公鑰加密的算法:
RSA:密鑰認證、資料交換都可應用(最常用)
DSA:僅用于密鑰認證
ELGamal:
3.單項加密(指資料能加密但不能解密):主要用于提取資料的特征碼
特性:
1.定長輸出:無論原來的資料是多大級别,其加密結果長度一樣
2.有雪崩效應:原始資料的微小改變将會導緻結果的巨大變化
3.不可逆:
算法:
MD5:采用128bits的定長輸出
SHA1:采用160bits的定長輸出,一共有2^160種
SHA256
SHA384
SHA512
CRC32:循環備援校驗碼
在/etc/shadow檔案中就使用的單項加密算法:

用處:
1.資料完整性
數字簽名:就是通信方用自己的私鑰加密提取的特征碼,就稱為數字簽名
密鑰交換:
5.一次加密通信的全過程
發送者:
1.使用單項加密算法提取出資料的特征碼
2.用自己的私鑰加密特征碼并附加在資料的後面
3.生成用于對稱加密的臨時密鑰
4.用生成的臨時密鑰加密資料和已加密的特征碼
5.使用接收方的公鑰加密臨時密鑰,并附加在對稱加密的後方
接收者:
1.使用自己的私鑰解密臨時密鑰,進而獲得對稱密鑰
2.使用對稱密鑰解密對稱加密的資料和私鑰加密的特征碼密文
3.使用發送方的公鑰解密特征碼密文,進而獲得對方計算生成的特征碼和資料
4.使用與對方同樣的單向加密算法計算資料的特征碼,并與解密而來的進行比較
6.數字證書
CA:證書頒發機構,對通信雙方的公鑰進行簽名、認證。
功用:保證公鑰資訊安全分發
數字證書的格式(x.509):
版本号(version)
序列号(serial number)
簽名算法标志
發行者的名稱:CA自己的名稱
有效期:兩個日志:起始日期和終止日期
證書主體名稱:證書擁有者的名字
證書主體公鑰資訊:證書擁有者自己的公鑰
發行商的唯一辨別:
證書主體的唯一辨別
擴充資訊:
簽名:CA對此證書的數字簽名
證書通常有2類用途:
使用者證書:某個使用者單獨使用
主機證書:(直接放在某主機上,被某個主機程序使用,如httpd程序)
撤銷證書:
7.PKI:Public Key Infrastructure,公鑰基礎設施
組成部分:
簽證機構:CA
注冊機構:RA
證書吊銷清單:CRL
證書存取庫:
8.NetScape---網景公司,研發浏覽器以及web浏覽器,以及SSL也是其研發的。
SSL協定,現在的版本:sslv1,sslv2,sslv3
TLS協定:transport layer security,現在版本:tlsv1,
http基于ssl協定後就變成了https,https監聽在443端口上
9.openssl的組成部分:
libcrypto:加密、解密庫檔案
libssl:ssl協定的實作
openssl:多用途的指令行工具,每種功能都使用專用的子指令來實作
linux中另一個加密解密的工具---gpg:全稱GNU Privarcy Guard,是pgp規範的實作
10.openssl:
子指令分類:
标準指令
消息摘要指令
加密、解密相關的指令
1.加密檔案(使用對稱加密),
工具:openssl enc,gpg
算法:des,3des,aes,blowfish,twofish,idea,cast5
enc工具簡單用法:
#openssl enc -e CIPHERNAME -a -salt -in /PATH/FROM/SOMEFILE -out /PATH/FROM/SOMECIPHERFILE
#openssl enc -d CIPHERNAME -a -salt -in /PATH/FROM/SOMECIPHERFILE -out /PATH/FROM/SOMEFILE
1.加密fstab檔案
#openssl enc -e -des3 -a -salt -in fstab -out fstab.des3
-e :表示加密,encryption
-des3:表示使用的加密算法為des3
-a :表示使用ASCII格式輸出文本内容
-salt:表示加密使用雜質
-in fstab:表示要加密的檔案為fstab
-out fstab.des3:表示加密後的檔案的名字叫fstab.des3
#cat fstab.des3
2.解密檔案
#openssl enc -d -des3 -a -salt -in fstab.des3 -out fstab.new
-d:表示解密
#cat fstab.new
2.單向加密:(提取特征碼)
算法:md5,sha1
工具:openssl dgst,md5sum
簡單用法:
#openssl dgst -CIPHER /PATH/TO/SOMEFILE…..
1.産生fstab.new檔案的特征碼
#openssl dgst -md5 fstab.new
-md5:使用md5碼來計算檔案fstab.new特征碼,并顯示在螢幕上
#md5sum fstab.new
上述兩者産生的md5碼是一樣的,
2.MAC:消息認證碼,單向加密的一種延伸 應用,用于實作在網絡通信中保證所傳輸的資料的完整性
常用的MAC機制:
CBC-MAC
HMAC:使用md5或sha1算法
3.生成使用者密碼:
簡單用法:
#openssl passwd -1 -salt 8bits随機數
一般8bits随機數 随機生成
執行個體:
#openssl passwd -1 -salt 12345678
輸入密碼即可
-1:表示使用MD5碼加密
-salt 12345678:表示加入雜質,防止密碼一樣而後生成的md5碼一樣
4.生成随機數
#openssl rand [-hex|-base64] NUM
1.#openssl rand -hex 4
4:表示4個字元,每個字元用2位二進制來表示
生成的随機數是0-9,a-f等16進制的随機數組成
2.#openssl rand -base64 4
生成的随機數a-z,1-9,A-Z等任何文本字元組成
5.整合生成随機數和使用者密碼
1.
#openssl passwd -1 -salt $(openssl rand -hex 4)
6.生成密鑰對兒(即生成私鑰,從私鑰中提取出公鑰)
簡單用法1(生成密鑰):genrsa
#openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUMBITS
gensa:生成密鑰的
-out /PATH/TO/PRIVATE_KEYFILE :指明生成密鑰檔案
NUMBITS:指明密鑰長度
1.
#openssl genrsa -out test.key 2048
#cat test.key
#chmod 400 test.key
【生成私鑰後,一定要更改私鑰的權限,僅root使用者可讀,其他使用者、組都無權限】
2.
#(umask 077;openssl genrsa -out /PATH/TO/PRIVATE_KEYFILE NUMBITS
)
#ll /PATH/TO/PRIVATE_KEYFILE
生成的test.key檔案的權限自動就是600
注意:在bash指令行放在小括号執行的指令,其實是通過打開一個子shell程序進行的;
簡單用法2(從私鑰中提取公鑰):rsa
#openssl rsa -in /PATH/TO/PRIVATE_KEY_FILE -pubout
1.從test.key提取公鑰并輸出在螢幕上
#openssl rsa -in test.key -pubout
系統上随機數生成器:random,urandom
熵池:用來儲存硬體中斷産生的随機數。被映射為兩個裝置檔案:
/dev/random:僅從熵池中傳回随機數,當熵池中的随機數耗盡時,取随機數的程序将會被阻塞
/dev/urandom:先從熵池中取随機數,當熵池中的随機數耗盡時,就通過僞随機數生成器生成随機數
X.509版證書格式:

獲驗證書的方法:
1.向RA注冊申請
2.建立私有CA,主要工具:OpenSSL
使用OpenSSL建構私有CA:
1.生成私鑰(私鑰用于簽發證書時,向證書添加數字簽名使用)
2.生成自簽署證書(證書用于實作與每個通信方都導入此證書至“受信任的證書頒發機構”)
配置檔案:/etc/pki/tls/openssl.cnf
工作目錄:/etc/pki/CA/
#cd /etc/pki/CA/;ls
certs crl newcerts private
certs:證書存放位置
crl:證書吊銷清單存放位置
newcerts :新建立的證書存放位置
private:CA自己私鑰的存放位置,cakey.pem為其私鑰
生成CA的私鑰,儲存在private/下名為cakey.pem的檔案,密鑰長度為2048位
#(umask 077 ;openssl genrsa -out private/cakey.pem 2048)
生成自簽證書的指令 :req,自請自簽,
#openssl req -new -x509 -key private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
-new:表示生成的新的證書簽署請求
-x509:表示自己跟自己簽證,直接輸出自簽署的證書檔案,通常隻有建構CA的時候才用
-key private/cakey.pem :指明私鑰的位置,用于提取公鑰
-out /etc/pki/CA/cacert.pem :表示将生成的證書儲存在/etc/pki/CA/cacert.pem檔案裡面
-days 3650:表示簽署證書的有效期為10年,機關為“天”
然後繼續簽署即可,建構私有證書就完成了
給節點發證書
1.節點申請證書
(在證書申請的主機上進行如下步驟)
(1)生成私鑰
(2)生成證書簽署請求
(3)把請求發送給CA
【注意:】
(1)其中的subject資訊部分,要與CA的保持一緻
(2)Common Name要使用此主機在通信真實使用名字
2.CA簽發證書
(1)驗證請求者資訊
(2)直接簽署證書
#openssl ca -in /PATH/FROM/CSR_FILE -out /PATH/TO/CRT_FILE -days N
(3)把簽好的證書發還給請求者
3.提供輔助檔案
示例:在web伺服器下
#cd /etc/httpd/;ls
#mkdir ssl
#cd ssl/
生成私鑰
#(umask 077 ;openssl genrsa -out httpd.key 1024)
生成證書簽署請求
#openssl req -new -key httpd.key -out httpd.csr
簽署請求即可
将證書請求發送給CA伺服器端(若在同一台主機上就不用發了)
建立CA所需要的檔案:index.txt,serial
#cd /etc/pki/CA;ls
#touch index.txt
#echo 01 > serial
簽署請求
#openssl ca -in /etc/httpd/ssl/httpd.csr -out /etc/httpd/ssl/httpd.crt -days 3650
吊銷證書
(1)擷取吊銷證書的序列号
#openssl x509 -in /PATH/FROM/CRT_FILE -noout -serial -subject
(2)CA實作證書吊銷
1.吊銷證書
#openssl ca -revoke /PATH/FROMCRT_FILE
2.生成吊銷證書的編号
#echo 01 > /etc/pki/CA/crl/number
3.更新證書吊銷清單
#openssl crl -gencrl -out THISCA.crl
示例:接上
#openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial -subject
子指令:genrsa,req ,ca,x509,crl