一、openssl簡介
OpenSSL 是一個強大的安全套接字層密碼庫,囊括主要的密碼算法、常用
的密鑰和證書封裝管理功能及SSL協議,並提供豐富的應用程序供測試或其它目的使用。
SSL:secure socket layer 安全套接層協議 可以在internet提供祕密性的傳輸。
二、加密算法
加密算法的分類:對稱、公鑰和單向加密
1、對稱加密:
加密和解密用同一個密鑰,安全性依賴於密鑰,而非算法。
(1)算法:
DES:Data Encryption standard,數據加密標準,56bits
3DES:DES加強版
AES:Advanced encrption standard 高級加密標準(128bits,192,256,382,512,)
可自行選擇加密位數,常用算法
blowfish
twofish
tdea
rc6
casts
(2)特性
1)同一密鑰
2)將明文分隔成固定大小的塊,逐個進行加密
(3)缺陷
1)密鑰過多
2)密鑰分發
2、公鑰加密:
(1)私鑰和公鑰
私鑰:secret key,僅允許個人使用
公鑰:public key,公開給所有人獲取
公鑰從私鑰中提取而來,使用公鑰加密的數據,只能使用與此公鑰配對配對的私鑰解密
(2)用處:
1)身份認證:私鑰擁有者用自己的私鑰加密的數據,只要用其公鑰能解密,即可認證其身份;
2)密鑰交換:與被通信方通信之前,首先獲取到對方的公鑰,自己生成一個加密密碼,用對方的公鑰加密,併發送給對方;
3)數據加密:
(3)算法:
RSA
DSA
ELGamal
(4)特性
1)密鑰長度較大,512,2048
2)加密解密分別使用密鑰對兒中的密鑰相對進行
3)用於數據簽名和密鑰交換
3、單向加密:
提取數據的特徵碼
(1)特性
1)定長輸出,無論原來數據的大小,加密長度一樣
2)雪崩效應:原數據微小改變,導致結果巨大變化
3)不可逆
(2)算法:
MD5:128bit
sha1 160
sha256
sha384
sha512
(3)用處:
數據完整性
4、一次加密通信過程
發送者:
(1)提取數據特徵碼
(2)私鑰加密特徵碼
(3)生成臨時密鑰
(4)臨時密鑰加密數據和加密過的特徵碼
(5)使用接收方公鑰加密臨時密鑰,附加在數據後方
接收方:
(1)用私鑰解密,獲得臨時密鑰
(2)使用臨時密鑰解密數據和特徵碼
(3)用對方公鑰解密特徵碼
(4)計算特徵碼,與解密的對比
三、數字證書
1、數字證書的定義:
數字證書:互聯網通訊中標誌通訊各方身份信息的一串數字,提供了一種在
Internet上驗證通信實體身份的方式,數字證書不是數字***,而是身份認證
機構蓋在數字***上的一個章或印。
它是由一個由權威機構——CA機構,又稱爲證書授權(Certificate Authority)
中心發行的,人們可以在網上用它來識別對方的身份。
2、數字證書的格式與用戶
(1)數字證書的格式(x.509 ):
版本號(version)
序列號:(serial number):CA用於唯一標識證書
簽名算法標誌(signature algorithm identifier)
發行者的名稱:即CA自己的名稱
有效證書主體名稱:證書擁有者自已的名字
證書文體公鑰信息:證書擁有者自己的公鑰
發行商的唯一標識
證書主體的唯一標識
擴展信息
簽名:CA對此證書的數字簽名
(2)證書通常有兩類用途
用戶證書
主機證書(httpd)
3、證書的吊銷鏈表:
算法-->CA的名稱-->本次更新時期-->下次更新日期-->用戶證書序列號,吊銷日期-->CA的數字簽名
4、獲取證書的方法:
(1)向RA註冊申請
(2)建立私有CA
四、openssl加密解密:
1、openssl 的組成部分
libcrypto:加密、解密庫文件
libssl:ssl協議實現
openssl:多用途命令行工具,每種功能都使用專用 的子命令來實現
2、對稱加密
工具:openssl enc
算法:des,3des,aes
openssl enc -e -CIPHERNAME -a salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/FILE
openssl enc -d -CIPHERNAME -a salt -in /PATH/FROM/SOMEFILE -out /PATH/TO/FILE
#cp /etc/fstab ./
#openssl enc -e -des3 -a -salt -in fstab -out fstab.des3
#openssl enc -d -des3 -a -salt -in fstab.des3 -out fstab
3、公鑰加密
工具:gpg,openssl rsautl
數字簽名:RSA,DSA,ELGamal
DSA:digital signature algorithm 數字簽名算法
DSS:digital signature standard 數字簽名標準
操作過程 :生成私鑰,從私鑰中提取公鑰
(1)生成私鑰:
openssl genrsa -out keyFILE NUM_BITS
#openssl genrsa -out testkey 2048
(umask 077;openssl genrsa -out KEY_FILE NUM_BITS)
#(umask 077;openssl genrsa -out testkey 2048)
注意:命令加(),會在子shell中運行,修改默認生成私鑰權限
(2)提取公鑰
#openssl rsa -in KEY_FILE -pubout
#openssl rsa -in testkey -pubout
4、單向加密
算法:md5,sha1
工具:openssl dgst,md2sum,sha1sum
openssl dgst -CIPHER /PATH/TO/SOMEFILE...
#openssl dgst -md5 fstab
#md5sum fstab
5、生成用戶密碼:
openssl passwd -1 -salt 8bits 隨機數 -1表示以MD5加密
#openssl passwd -1 -salt 12345678
6、生成隨機數
openssl rand -hex|-base64 NUM
#openssl passwd -1 -salt $(openssl rand -hex 4)
openssl
7、隨機數生成器
random,urandom
熵池:保存硬件中斷產生的隨機數
/dev/random 僅從熵池中返回隨機,當熵池耗盡,進程將被阻塞
/dev/urandom 取隨機數,當熵池耗盡,讓生成器生成隨機數
五、構建私有CA
配置文件:/etc/pki/tls/openssl.conf
工作目錄:/etc/pki/CA/
1、建立私有CA:
(1)生成私鑰文件 /etc/pki/CA/private/cakey.pem
#cd /etc/pki/CA
#(umask 077;openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
(2)生成自簽證書
#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out/etc/pki/CA/cacert.pem -days 3650
-new :生成新的證書籤署請求
-key 私鑰文件路徑,用於提取公鑰
-days N:有效時長 ,天
-out:輸出文件保存位置
-x509:直接輸出自簽署證書文件,只有構建CA時才用
(3)提供輔助文件
#cd /etc/pki/CA
#touch /etc/pki/CA/index.txt
#echo 01 >/etc/pki/CA/serial
2、給節點發證書
(1)節點申請證書
1)生成私鑰
#cd /etc/httpd
#mkdir ssl
#(umask 077;openssl genrsa -out httpd.key 1024)
2)生成證書籤署請求
#openssl req -new -key httpd.key -out httpd.csr
注意:
a)其中subject信息部分與CA一致
b)common Name 要使用此主機在通信使用名字
3)把請求發送給CA
(2)CA簽發證書
1)驗正請求者信息
2)簽署證書
openssl ca -in CSR_FILE -out CRT_FILE -days N
#openssl ca -in /etc/httpd/ssl/http.csr -out /etc/httpd/ssl/httpd.crt -days 3650
3)把簽署好的證書發還給請求者
3、吊銷證書:
(1)獲取吊銷證書的序列號
openssl x509 -in CRT_FILE -noout -serial -subject
#openssl x509 -in /etc/httpd/ssl/httpd.crt -noout -serial -subject
(2)實現證書吊銷
1)吊銷證書
#openssl ca -revoke CRT_FILE
2) 生成吊銷證書編號
#echo 01 >/etc/pkie/ca/crlnumber
3)更新證書吊銷列表
#openssl crl -gencrl -out SCA.crl