linux基礎之加密解密、PKI及SSL、創建私有CA
加密解密基礎
1. 對稱加密: 加密和解密使用同一個密鑰
常見的加密算法有:DES、3DES、AES、Blowfish、Twofish、IDEA、RC6、CAST5
特性:
1. 加密、解密使用同一個密鑰
2.將原始數據分隔成固定大小的塊,逐個進行加密
缺陷:
1. 密鑰過多
2. 密鑰分發困難
2. 公鑰加密: 密鑰是成對出現的
公鑰:pubkey,公開給所有人
私鑰:secret key, 自己留存,必須保證其私密性
常見的加密算法有: RSA、DSA(只能用於數字簽名,不能用於數據加密), ELGamal
特點: 用公鑰加密的數據,只能使用與之配對的私鑰解密,反之亦然
3. 單向加密: 只能加密,不能解密,用來提取數據特征碼,驗證數據完整性
常見加密算法有:MD5、SHA1、SHA224、SHA256、SHA384、SHA512
特性: 定長輸出,雪崩效應,一個小的改變,加密後的密鑰就大不同
密鑰交換(IKE): 常見的有公鑰加密、DH(Deffie-Hellman)來實現密鑰交換
PKI: Public Key Infrastructure 公鑰基礎設施
主要組件:
簽證機構:CA 註冊機構:RA 證書吊銷列表: CRL 證書存取庫
目前簽發的證書:x.509
x.509: 定義了證書的結構以及認證協議標準:
版本號
序列號
簽署算法ID
有效期限
發行者名稱
主體名稱
主體公鑰
發行者唯一標識
主體的唯一標識
擴展
發行者簽名
SSL:Secure Socket Layer, 安全的套接字層
TLS: Transport Layer Security
openssl:開源項目
三個組件:
openssl: 多用途的命令行工具
libcrypto: 公共加密庫
libssl: 庫,實現了ssl及tls
openssl命令:配置文件: /etc/pki/tls/openssl.conf
openssl version: 查看程序版本號
常見的標準命令有enc、ca、req
對稱加密:
工具: openssl enc, gpg
加密: # openssl enc -e -des3 -a -salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/SOMEFILE 解密: # openssl enc -d -dec3 -a -salt -in /PATH/FORM/SOMEFILE -OUT /PATH/TO/SOMEFILE
單向加密:
工具:openssl dgst, md5sum,sha1sum,sha224sum,sha256sum...
加密: openssl dgst -md5 /PATH/TO/SOMEFILE
生成用戶密碼:passwd
# openssl passwd -1 -salt SALT
生成隨機數:rand
# openssl rand -base64|-hex NUM NUM:表示字節數;-hex時,每個字符4位,出現的字符數為NUM*2
公鑰加密:
加密: RSA, ELGamal
工具:gpg, openssl, rsautil
加密私鑰:# (umask 077; openssl genrsa -out private.key 2048) 提取公鑰:# openssl rsa -in private -pubout
創建私有CA
1. 創建所需要的文件
# touch index.txt # echo 01 > serial
2.CA自簽證書
#(umask 077;openssl genrsa -out /etc/pki/CA/private.pem 2048)
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -days 7300 -out /etc/pki/CA/casert.pem
-new: 生成新證書簽署請求
-x509: 專用於CA生成自簽證書
-key: 生成請求時用到的私鑰文件
-days n : 證書的有效期限
-out /PATH/TO/SOMECERTFILE: 證書的保持路徑
3. 發證
a. 用到證書的主機生成證書請求
# (umask 077;openssl genrsa -out /etc/httpd/ssl/httpd.key 2048) # openssl -req -new -key /etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr
b. 把請求文件傳輸給CA
# scp /etc/httpd/ssl/httpd.csr [email protected]192.168.1.103:/tmp/
c. CA簽署證書,並將證書發還給請求者
# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
查看證書中的信息
# openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|-subject|=serial
4. 吊銷證書
a. 獲取要吊銷的證書的serial
# openssl x509 -in /PATH/FROM/CERT_FILE -noout -serial -subject
b. CA
先根據客戶端提交的serial與subject信息對比檢驗是否與index.txt文件中的信息一致
吊銷證書:
# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
c. 生成吊銷證書的編號(第一次吊銷一個證書)
# ech 01 > /etc/pki/CA/crlnumber
d. 更新證書吊銷列表
# openssl ca -gencrl -out thisca.crl
查看crl文件
# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
linux基礎之加密解密、PKI及SSL、創建私有CA