對稱加密演算法 非對稱加密演算法 單向散列(hash演算法) CA和證書 證書獲取 安全協議 OpenSSL openssl命令 創建CA和申請證書 ...
對稱加密演算法
1 對稱加密:加密和解密使用同一個密鑰 2 DES:Data Encryption Standard,56bits 3 3DES: 4 AES:Advanced (128, 192, 256bits) 5 Blowfish,Twofish 6 IDEA,RC6,CAST5 7 特性: 8 1、加密、解密使用同一個密鑰,效率高 9 2、將原始數據分割成固定大小的塊,逐個進行加密 10 缺陷: 11 1、密鑰過多 12 2、密鑰分發 13 3、數據來源無法確認
非對稱加密演算法
1 公鑰加密:密鑰是成對出現 2 公鑰:公開給所有人;public key 3 私鑰:自己留存,必須保證其私密性;secret key 4 特點:用公鑰加密數據,只能使用與之配對的私鑰解密;反之亦然 5 功能: 6 數字簽名:主要在於讓接收方確認發送方身份 7 對稱密鑰交換:發送方用對方的公鑰加密一個對稱密鑰後發送給對方 8 數據加密:適合加密較小數據 9 缺點:密鑰長,加密解密效率低下 10 演算法: 11 RSA(加密,數字簽名) 12 DSA(數字簽名) 13 ELGamal
單向散列(hash演算法)
1 將任意數據縮小成固定大小的“指紋” 2 任意長度輸入 3 固定長度輸出 4 若修改數據,指紋也會改變(“不會產生衝突”) 5 無法從指紋中重新生成數據(“單向”) 6 功能:數據完整性 7 常見演算法 8 md5: 128bits、sha1: 160bits、sha224 、sha256、sha384、sha512 9 常用工具 10 md5sum | sha1sum [ --check ] file 11 openssl、gpg 12 rpm -V 13 hash(data)=digest 摘要,有時候也稱為指紋 只要數據不同摘要必不同,得到摘要推不出原來的數據值 14 不論什麼數據。不論數據的大小,只要用的演算法相同,那麼輸出長度必定相同 15 只要數據不同,摘要完全不同,哪怕數據之間只相差一個空格字元都會產生巨大的變化也稱雪崩效應 16 常用於對比數據,數據是否被修改過,數據相同,摘要必定相同 17 18 文件完整性的兩種實施方式 19 被安裝的文件 20 md5單向hash 21 rpm -V package-name 22 例:修改文件內容查看hash 23 rpm -qf /etc/issue 24 centos-release-7-6.1810.2.el7.centos.x86_64 25 rpm -V centos-release 26 missing c /etc/yum.repos.d/CentOS-Base.repo 27 missing c /etc/yum.repos.d/CentOS-CR.repo 28 echo 1 >> /etc/issue 29 rpm -V centos-release 30 ..5....T. c /etc/issue :5就表示md5,說明文件內容變了,T表示文件的時間變了 31 missing c /etc/yum.repos.d/CentOS-Base.repo 32 missing c /etc/yum.repos.d/CentOS-CR.repo 33 然後將追加的1刪掉。再次比較 34 rpm -V centos-release 35 .......T. c /etc/issue :文件內容恢復。但是時間改變了 36 missing c /etc/yum.repos.d/CentOS-Base.repo 37 missing c /etc/yum.repos.d/CentOS-CR.repo 38 39 發行的軟體包文件 40 GPG公鑰簽名 41 rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 42 rpm -K tree-1.6.0-10.el7.x86_64.rpm 43 44 如果不導入公鑰,系統提示沒有公鑰,不能檢查,如果有問題提示NOT OK
CA和證書
1 PKI: Public Key Infrastructure 2 簽證機構:CA(Certificate Authority) 3 註冊機構:RA 4 證書吊銷列表:CRL 5 證書存取庫: 6 X.509:定義了證書的結構以及認證協議標準 7 版本號 主體公鑰 8 序列號 CRL分發點 9 簽名演算法 擴展信息 10 頒發者 發行者簽名 11 有效期限 12 主體名稱
證書獲取
1 證書類型: 2 證書授權機構的證書 3 伺服器 4 用戶證書 5 獲取證書兩種方法: 6 使用證書授權機構 7 生成證書請求(csr) 8 將證書請求csr發送給CA 9 CA簽名頒發證書 10 自簽名的證書 11 自已簽發自己的公鑰
安全協議
1 SSL:Secure Socket Layer,TLS: Transport Layer Security (安全套接層) 2 1995:SSL 2.0 Netscape 3 1996:SSL 3.0 4 1999:TLS 1.0 5 2006:TLS 1.1 IETF(Internet工程任務組) RFC 4346 6 2008:TLS 1.2 當前使用 7 2015:TLS 1.3 8 功能:機密性,認證,完整性,重放保護 9 兩階段協議,分為握手階段和應用階段 10 握手階段(協商階段):客戶端和伺服器端認證對方身份(依賴於PKI體系,利用數字 11 證書進行身份認證),並協商通信中使用的安全參數、密碼套件以及主密鑰。後續通信使 12 用的所有密鑰都是通過MasterSecret生成。 13 應用階段:在握手階段完成後進入,在應用階段通信雙方使用握手階段協商好的密 14 鑰進行安全通信
1 SSL/TLS 2 Handshake協議:包括協商安全參數和密碼套件、伺服器身份認證(客戶端身 3 份認證可選)、密鑰交換 4 ChangeCipherSpec 協議:一條消息表明握手協議已經完成 5 Alert 協議:對握手協議中一些異常的錯誤提醒,分為fatal和warning兩個級別, 6 fatal類型錯誤會直接中斷SSL鏈接,而warning級別的錯誤SSL鏈接仍可繼續, 7 只是會給出錯誤警告 8 Record 協議:包括對消息的分段、壓縮、消息認證和完整性保護、加密等 9 HTTPS 協議:就是“HTTP 協議”和“SSL/TLS 協議”的組合。HTTP over 10 SSL”或“HTTP over TLS”,對http協議的文本數據進行加密處理後,成為二 11 進位形式傳輸
OpenSSL
1 OpenSSL:開源項目 2 三個組件: 3 openssl:多用途的命令行工具,包openssl 4 libcrypto:加密演算法庫,包openssl-libs 5 libssl:加密模塊應用庫,實現了ssl及tls,包nss 6 openssl命令: 7 兩種運行模式:交互模式和批處理模式 8 openssl version:程式版本號 9 標準命令、消息摘要命令、加密命令 10 標準命令:enc, ca, req, ...
openssl命令
1 對稱加密: 2 工具:openssl enc, gpg 3 演算法:3des, aes, blowfish, twofish 4 enc命令: 5 幫助:man enc 6 加密: 7 openssl enc -e -des3 -a -salt -in testfile -out testfile.cipher 8 解密: 9 openssl enc -d -des3 -a -salt –in testfile.cipher -out testfile 10 openssl ?
1 單向加密: 2 工具:md5sum, sha1sum, sha224sum,sha256sum… 3 openssl dgst 4 dgst命令: 5 幫助:man dgst 6 openssl dgst -md5 [-hex預設] /PATH/SOMEFILE 7 openssl dgst -md5 testfile 8 md5sum /PATH/TO/SOMEFILE 9 MAC: Message Authentication Code,單向加密的一種延伸應用,用於實現 10 網路通信中保證所傳輸數據的完整性機制 11 CBC-MAC 12 HMAC:使用md5或sha1演算法
1 生成用戶密碼: 2 passwd命令: 3 幫助:man sslpasswd 4 openssl passwd -1 -salt SALT(最多8位) 5 openssl passwd -1 –salt centos 6 –salt:打亂生成的hash值,正常使用md5生成的hash值只要數據相同 7 hash值就相同添加–salt嚴之後就可以打亂hash值即使數據一樣hash 8 值也是不一樣的 9 生成隨機數: 10 幫助:man sslrand 11 openssl rand -base64|-hex NUM 12 NUM: 表示位元組數,使用-hex,每個字元為十六進位,相當於4位二進位,出現的字元數為NUM*2
1 公鑰加密: 2 演算法:RSA, ELGamal 3 工具:gpg, openssl rsautl(man rsautl) 4 數字簽名: 5 演算法:RSA, DSA, ELGamal 6 密鑰交換: 7 演算法:dh 8 DSA:Digital Signature Algorithm 9 DSS:Digital Signature Standard 10 RSA:
1 生成密鑰對兒:man genrsa 2 生成私鑰 3 openssl genrsa -out /PATH/TO/PRIVATEKEY.FILE NUM_BITS 4 (umask 077; openssl genrsa –out test.key –des 2048) 5 openssl rsa -in test.key –out test2.key 將加密key解密 6 從私鑰中提取出公鑰 7 openssl rsa -in PRIVATEKEYFILE –pubout –out PUBLICKEYFILE 8 openssl rsa –in test.key –pubout –out test.key.pub 9 隨機數生成器:偽隨機數字 10 鍵盤和滑鼠,塊設備中斷 11 /dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞 12 /dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟體生成偽隨機數,非阻塞
創建CA和申請證書
1 openssl的配置文件:/etc/pki/tls/openssl.cnf 2 配置文件中有對應的語句塊,定義預設CA,也可以添加CA,CA的預設設置 3 文件中關於CA的選項策略,搭建CA時需要指定的信息(國家,城市,公司等等) 4 match:要求申請填寫的信息和CA設置信息必須一致 5 optional:可有可無,和CA設置信息可不一致 6 supplied:必須填寫這項申請信息 7 將來客戶端申請填寫時要註意以上欄位,需要填寫一致,否則報錯 8 1、創建所需要的文件 9 touch /etc/pki/CA/index.txt :生成證書索引資料庫文件 10 echo 01 > /etc/pki/CA/serial:指定第一個頒發證書的序列號 11 2、CA自簽證書 12 生成私鑰 13 cd /etc/pki/CA/ 14 (umask 066;openssl genrsa -out private/cakey.pem 2048) :安全 15 3、生成自簽名證書: 16 openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 3650 -out /etc/pki/CA/cacert.pem 17 回車後輸入CA的信息,地區(兩個字元,例CN),公司,CA的功能變數名稱,郵箱(可選項) 18 選項說明: 19 -new:生成新證書簽署請求 20 -x509:專用於CA生成自簽證書 21 -key:生成請求時用到的私鑰文件 22 -days n:證書的有效期限 23 -out /path/to/file:證書的保存路徑 24 客戶端創建私鑰申請證書: 25 1、創建私鑰 26 (umask 066;openssl genrsa -out http.key 1024) 27 2、利用私鑰生成證書申請 28 openssl req -new -key /data/http.key -out /data/http.csr 29 回車後輸入相關信息,預設國家,城市,和公司這三項必須填寫一樣。部門是自定義的,主機名也是自定以,輸入將來你要作為功能變數名稱的那個名字。 30 3、將生成的申請發送到CA伺服器 31 scp http.csr 伺服器IP:/tmp/ 32 服務端CA簽署證書,並將證書頒發給請求者 33 1、生成證書 34 openssl ca -in /tmp/http.csr -out /etc/pki/CA/certs/http.crt -days 365 35 回車後輸入信息,預設要求國家,省,公司三項必須和CA一致 36 2、將證書版發給請求者客戶端 37 scp /etc/pki/CA/certs/http.crt 客戶端IP:/data/ 38 至此證書申請完畢,使用證書是應用軟體中實現,在軟體例如httpd中添加此證書的路徑就可以用了 39 40 查看證書中的信息 41 openssl x509 -in /path/to/file.crt -noout -test|issuer|subject|serial|dates 42 例:openssl x509 -in /data/http.crt -noout -text 43 openssl ca -status SERIAL :查看指定編號的證書狀態