一、安全協議
SSL: Secure Socket Layer???安全套階層協議
TLS: Transport Layer Security? ? ?安全傳輸層協議,SSL改名TLS,一個東西,可通稱
1995:SSL 2.0 Netscape???1.0不普及
1996: SSL 3.0
1999: TLS 1.0
2006: TLS 1.1 IETF(Internet工程任務組) RFC 4346
2008:TLS 1.2 當前使用???最普遍
2015: TLS 1.3
- 功能:機密性,認證,完整性,重放保護(防重放,第一次有效第二次失效)?
- 兩階段協議,分為握手階段和應用階段
握手階段(協商階段):客戶端和服務器端認證對方身份(依賴于PKI體系,利用數字證書進行身份認證),并協商通信中使用的安全參數、密碼套件以及主密鑰。后續通信使用的所有密鑰都是通過MasterSecret生成。
應用階段:在握手階段完成后進入,在應用階段通信雙方使用握手階段協商好的密鑰進行安全通信
?
SSL/TLS
Handshake協議:包括協商安全參數和密碼套件、服務器身份認證(客戶端身份認證可選)、密鑰交換
ChangeCipherSpec 協議:一條消息表明握手協議已經完成
Alert 協議:對握手協議中一些異常的錯誤提醒,分為fatal和warning兩個級別,fatal類型錯誤會直接中斷SSL鏈接,而warning級別的錯誤SSL鏈接仍可繼續,只是會給出錯誤警告
Record 協議:包括對消息的分段、壓縮、消息認證和完整性保護、加密等
HTTPS 協議:就是“HTTP 協議”和“SSL/TLS 協議”的組合。HTTP over?SSL”或“HTTP over TLS”,對http協議的文本數據進行加密處理后,成為二進制形式傳輸? ? ??用的最多
二、SSL協議的開源實現:OpenSSL
三個組件:
openssl: 多用途的命令行工具,包openssl
libcrypto: 加密算法庫,包openssl-libs
libssl:加密模塊應用庫,實現了ssl及tls,包nss
?
openssl命令:
兩種運行模式:交互模式? 和? 批處理模式
openssl version:程序版本號
命令大致分為三類:
標準命令:子命令 enc, ca, req, …
消息摘要命令:子命令 dgst …
加密命令:子命令 enc?…
查看更多子命令? ?openssl ??
1、對稱加密:
工具:openssl enc, gpg
算法:3des, aes, blowfish, twofish
enc命令:
幫助:man enc
加密:? openssl enc -e -des3 -a -salt?-in testfile?-out testfile.cipher
解密:??openssl enc -d -des3 -a -salt -in testfile.cipher?-out testfile?生成新文件
-e? ? 表示加密
-d? ? 表示解密
-in /PATH/TO/FILE? ?要加密的文件
-out /PATH/TO/FILE ?加密后生成新文件;不加這個選項就只有標準輸出,不生成文件
-pass STRING ?表示對稱加密的秘鑰是什么
-a|-base64 ? 表示以base64文本格式進行編碼?(大小寫字母 / 及 + 的表現形式,不夠六位用=補足)
-salt? ? ?加雜質使亂碼??
2、單向加密:
工具:md5sum,sha1sum,sha224sum,sha256sum…
openssl dgst
dgst命令:
幫助:man dgst
openssl dgst -md5 [-hex默認] /PATH/SOMEFILE
openssl dgst -md5 testfile
md5sum testfile? 結果同上,格式不一樣
生成用戶密碼:? ?passwd命令
幫助:man sslpasswd
openssl passwd -1??不指定salt,則隨機生成
openssl passwd -1?-salt SALT(最多8位)????指定salt
openssl passwd -1 –salt centos 指定鹽,則同樣的密碼加密后生成同樣的字符串
生成隨機數: rand命令
幫助:man sslrand
openssl rand -base64|-hex NUM
NUM: 表示字節數;-hex時,每個字符為十六進制,相當于4位二進制,出現的字符數為NUM*2 ?
注:-base64?二進制的六位,指定數字NUM若不是3的倍數,會用=補足
如下圖:
隨機數生成器:偽隨機數字
鍵盤和鼠標,塊設備中斷
/dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞
/dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟件生成偽隨機數,非阻塞
3、生成密鑰對
生成密鑰對兒:man genrsa
生成私鑰
openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS
或? ? (umask 077; openssl genrsa -out test.key -des 2048)?
生成私鑰文件,并設定權限及加密私鑰,小括號開啟子進程,不改變父進程的umask值
將加密key解密并生成文件
? openssl rsa -in test.key -out test2.key
從私鑰中提取出公鑰
? ? ?openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE
例:openssl rsa –in test.key –pubout –out test.key.pub
公鑰加密:
算法:RSA, ELGamal
工具:gpg,openssl rsautl(man rsautl)
數字簽名:
算法:RSA, DSA, ELGamal
密鑰交換:
算法:dh
DSA: Digital Signature Algorithm
DSS:Digital Signature Standard
RSA:
三、創建CA和申請證書
創建私有CA:
openssl的配置文件:/etc/pki/tls/openssl.cnf??其中定義了openssl完成CA工作時的相關屬性定義
三種策略:
匹配match:要求申請填寫的信息跟CA設置信息必須一致
支持supplied:必須填寫這項申請信息
可選optional:可有可無
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?2048)???目錄及文件名定死了
生成自簽名證書
?openssl req -new -x509?–key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/cacert.pem
-x509表示自簽名,沒有表示申請,簽名證書路徑名稱定死 ?交互式命令
直接cat /etc/pki/CA/cacert.pem???base64編碼看不懂
-new: 生成新證書簽署請求
-x509: 專用于CA生成自簽證書
-key: 生成請求時用到的私鑰文件
-days n:證書的有效期限
-out /PATH/TO/SOMECERTFILE: 證書的保存路徑
??3、頒發證書? ? ?掌握?。?!
在需要使用證書的主機生成證書請求
給web服務器生成私鑰? ? (客戶端)
(umask 066; openssl genrsa -out?/etc/pki/tls/private/test.key 2048)???路徑和名字沒規定
生成證書申請文件? ?(客戶端)
openssl req -new -key /etc/pki/tls/private/test.key?-out /etc/pki/tls/test.csr??交互式命令
-days?365這里不寫,有效期由頒發者決定
將證書請求文件傳輸給CA? ?(客戶端)
?scp /etc/pki/tls/test.csr?IP:/PATH/TO
?
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?
? ? ? ? ?參數:Text格式查看、單看頒發人、單看頒發對象、單看編號、單看有效期
查看指定編號的證書狀態? ? (服務器端)
openssl ca -status SERIAL
補充:cat /etc/pki/CA/index.txt 查看所有證書 ?行首帶V表示有效,吊銷R
或者傳入Windows電腦,改后綴為.crt或 .cer才會變證書圖標,即可查看
安裝證書:雙擊證書圖標,安裝過程中要出現安全警告才正確!在控制面板-Internet選項-內容查看
4、吊銷證書? ? ?(了解)
在客戶端獲取要吊銷的證書的serial
openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
在CA上,根據客戶提交的serial與subject信息,對比檢驗是否與index.txt文件中的信息一致,吊銷證書:
openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
指定第一個吊銷證書的編號,注意:第一次更新證書吊銷列表前,才需要執行
echo 01 > /etc/pki/CA/crlnumber
更新證書吊銷列表
openssl ca -gencrl -out /etc/pki/CA/crl.pem
查看crl文件:
openssl crl -in /etc/pki/CA/crl.pem -noout -text
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/99795