1.PKI: Public Key Infrastructure
簽證機構:CA(Certificate Authority)
注冊機構:RA
證書吊銷列表:CRL
證書存取庫:
X.509:定義了證書的結構以及認證協議標準
版本號 序列號 簽名算法 頒發者 有效期限
主體名稱 主體公鑰 CRL分發點 擴展信息 發行者簽名
2.證書獲取
(1)證書類型:
證書授權機構的證書
服務器
用戶證書
(2)獲取證書兩種方法:
? 使用證書授權機構
生成簽名請求(csr)
將csr發送給CA
從CA處接收簽名
? 自簽名的證書
自已簽發自己的公鑰
3.安全協議SSL: Secure Socket Layer
TLS: Transport Layer Security
1995:SSL 2.0 Netscape
1996: SSL 3.0
1999: TLS 1.0 可以理解為SSL升級版
2006: TLS 1.1 IETF(Internet工程任務組) RFC 4346
2008:TLS 1.2 當前使用
2015: TLS 1.3
功能:機密性,認證,完整性,重放保護
兩階段協議,分為握手階段和應用階段
握手階段(協商階段):
客戶端和服務器端認證對方身份(依賴于PKI體系,利用數字證書進行身份認證),并協商通信
中使用的安全參數、密碼套件以及主密鑰。后續通信使用的所有密鑰都是通MasterSecret生成。
應用階段:
在握手階段完成后進入,在應用階段通信雙方使用握手階段協商好的密鑰進行安全通信
4.SSL/TLS
(1)Handshake協議:
包括協商安全參數和密碼套件、服務器身份認證(客戶端身份認證可選)密鑰交換
(2)ChangeCipherSpec 協議:
一條消息表明握手協議已經完成
(3)Alert 協議:
對握手協議中一些異常的錯誤提醒,分為fatal和warning兩個級別,fatal類型錯誤會直接
中斷SSL鏈接,而warning級別的錯誤SSL鏈接仍可繼續,只是會給出錯誤警告
(4)Record 協議:
包括對消息的分段、壓縮、消息認證和完整性保護、加密等
(5)HTTPS 協議:
就是“HTTP 協議”和“SSL/TLS 協議”的組合。HTTP over SSL”或“HTTP over TLS”,對http
協議的文本數據進行加密處理后,成為二進制形式傳輸
5.OpenSSL:實現加密的開源套件
(1)三個組件:
openssl: 多用途的命令行工具,包openssl
libcrypto: 加密算法庫,包openssl-libs
libssl:加密模塊應用庫,實現了ssl及tls,包nss
(2)openssl命令:
兩種運行模式:
交互模式和批處理模式
openssl version:程序版本號
標準命令、消息摘要命令、加密命令
標準命令:enc, ca, req, ...
Paste_Image.png
(3)公鑰加密:
算法:RSA, ELGamal
工具:gpg, openssl rsautl(man rsautl)
(4)數字簽名:
算法:RSA, DSA, ELGamal
(5)密鑰交換:
算法:dh,DSA,DSS,RSA
(6) 對稱加密:
工具:openssl enc, gpg
算法:3DES, AES, BLOWFISH,TWOFISH
6.enc命令(對稱加密)
(1)查看幫助:
man enc
(2)加密:
openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher
Paste_Image.png
-e加密
-des3就是對稱加密的一種
-a -salt加隨機數
-in 要加密的文件
-out 加密后文件的名字
(3)解密:
openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile
Paste_Image.png
-d解密
-a -salt加隨機數
-in要解密的文件
-out指定解密后文件的名稱
7.單向加密:即哈希加密
工具:md5sum, sha1sum, sha224sum,sha256sum… openssl dgst
- dgst命令:
幫助:man dgst
openssl dgst -md5 [-hex默認] /PATH/SOMEFILE
openssl dgst -md5 testfile
md5sum /PATH/TO/SOMEFILE
Paste_Image.png
MAC: Message Authentication Code,單向加密的一種延 伸應用,用于實現網絡通信中保證所傳輸數據的完整性機制 CBC-MAC
HMAC:使用md5或sha1算法
8.生成用戶密碼:
(1)passwd命令:
幫助:man sslpasswd
openssl passwd -1 -salt SALT(最多8位)
openssl passwd -1 –salt centos
(2) 生成隨機數:
幫助:man sslrand
openssl rand -base64|-hex NUM
NUM: 表示字節數;-hex時,每個字符為十六進制,相 當于4位二進制,出現的字符數為NUM*2
-base64 -hex:編碼格式
Paste_Image.png
9. 生成密鑰對兒:genrsa
man genrsa
(1)生成私鑰
#openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
#(umask 077; openssl genrsa –out test.key –des 2048)
Paste_Image.png
為了保護秘鑰文件安全,一般要對秘鑰文件加權限,第一個可以用chmod加上去,第二個就把文件權限直接改為了600
-out 輸出秘鑰文件名稱
-des 對私鑰加口令,保護私鑰安全
(2)從私鑰中提取出公鑰
openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
Openssl rsa –in test.key –pubout –out test.key.pub
Paste_Image.png
10.隨機數生成器:偽隨機數字
鍵盤和鼠標
塊設備中斷
/dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞
/dev/urandom:從熵池返回隨機數;隨機數用盡,會利
用軟件生成偽隨機數,非阻塞
11.創建CA和申請證書
(1)證書申請及簽署步驟:
1、生成申請請求
2、RA核驗
3、CA簽署
4、獲取證書
(2)創建私有CA:OpenCA ,openssl
openssl的配置文件:/etc/pki/tls/openssl.cnf(非常重要哦!)
Paste_Image.png
Paste_Image.png
Paste_Image.png
三種策略:匹配、支持和可選
匹配指要求申請填寫的信息跟CA設置信息必須一致
支持指必須填寫這項申請信息
可選指可有可無
1、創建所需要的文件
# touch /etc/pki/CA/index.txt 生成證書索引數據庫文件
# echo 01 > /etc/pki/CA/serial 指定第一個頒發證書的序列號
2、CA自簽證書
生成私鑰
# cd /etc/pki/CA/
# (umask 066; openssl genrsa -out /etc/pki/CA/private/cakey.pem -des 2048)
/etc/pki/CA/private/cakey.pem指定路徑
生成自簽名證書
# openssl req -new -x509 –key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
-new: 生成新證書簽署請求
-x509: 專用于CA生成自簽證書,如果不加,只能生成證書
-key: 生成請求時用到的私鑰文件
-days n:證書的有效期限
-out /PATH/TO/SOMECERTFILE: 證書的保存路徑
3、頒發證書
? 在需要使用證書的主機生成證書請求
給web服務器生成私鑰
# (umask 066; openssl genrsa -out /etc/pki/tls/private/test.key -des 2048)
生成證書申請文件
# openssl req -new -key /etc/pki/tls/private/test.key -days 365 -out etc/pki/tls/test.csr
? 將證書請求文件傳輸給CA
? *.csr請求者的證書
? CA簽署證書,并將證書頒發給請求者
openssl ca -in /tmp/test.csr –out /etc/pki/CA/certs/test.crt -days 365
注意:默認國家,省,公司名稱三項必須和CA一致
? 查看證書中的信息:
# openssl x509 -in /PATH/FROM/CERT_FILE -noout text(以文本文件查看)|issuer|subject|serial|dates
-in 證書路徑
# openssl ca -status SERIAL 查看指定編號的證書狀態
?再用scp傳輸到請求的子CA主機上cert
12.吊銷證書
(1)在客戶端獲取要吊銷的證書的serial
openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
(2) 在CA上,根據客戶提交的serial與subject信息,對比檢驗是否與index.txt文件中的信息一致,吊銷證書:
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
(3) 指定第一個吊銷證書的編號
echo 01 > /etc/pki/CA/crlnumber
注意:第一次更新證書吊銷列表前,才需要執行
(4)更新證書吊銷列表
openssl ca -gencrl -out /etc/pki/CA/crl/crl.pem
查看crl文件:
openssl crl -in /etc/pki/CA/crl/crl.pem -noout -text