一.openssl
openssl 由3部分組成:
openssl: 多用途的指令行工具
libcrypto: 加密算法庫
libssl:加密子產品應用庫,實作了ssl及tls
openssl子指令:
1. 對稱加密工具:enc,gpg
常用算法: 3des,aes,blowfish,twofish
openssl enc:
加密: openssl enc -e -des3 -a-salt -in anaconda-ks.cfg -out anaconda-ks.cfg.des3
檢視加密後的檔案是亂碼
解密:openssl enc -d -des3 -a-salt -in anaconda-ks.cfg.des3 -out anaconda-ks.cfg
2.單向加密
單向加密工具::md5sum, sha1sum,sha224sum,sha256sum…
openssldgst
算法: md5, sha1
openssldgst-md5 [-hex預設]/PATH/SOMEFILE
openssldgst-md5 testfile
md5sum /PATH/TO/SOMEFILE
如: openssl dgst -md5 f1
3. 生成使用者密碼:
passwd指令:man sslpasswd
openssl passwd-1 -salt SALT(最多8位)
openssl passwd-1 –salt centos
4.生成随機數: man sslrand
openssl rand -hex|-base64 num
num:表示位元組數,-hex:每個位元組4位,出現的字元數為num*2
5.公鑰加密
算法: RSA,ELGamal,DSA
工具: gpg,openssl rsautl
密鑰交換:
公鑰加密,DH
生成密鑰對:
openssl genrsa-out/PATH/TO/PRIVATEKEY.FILE NUM_BITS
(umask 077; openssl genrsa -outkey –des 1024) 注意:-des 為加密
從私鑰中提取公鑰:
openssl rsa -in PRIVATEKEYFILE –pubout –outPUBLICKEYFILE
二. 建立CA和申請證書
2.1 建立私有CA:
1. 生成私鑰
2. 生成自簽署證書
(1)私鑰用于簽發證書時,向證書添加數字簽名使用
(2)證書:每個通信方都導入此證書至"受信任的證書頒發機構"
openssl的配置檔案:/etc/pki/tls/openssl.cnf
工作目錄: /etc/pki/CA
2.2 建立私有CA步驟:
1. 建立所需要的檔案
touch/etc/pki/CA/index.txt ---頒發證書時寫入内容
echo 01 >/etc/pki/CA/serial ---序列号檔案,從1開始
2. 生成私鑰檔案:/etc/pki/CA/private/cakey.pem
(umask 077; openssl genrsa -out/etc/pki/CA/private/cakey.pem 2048)
3. 生成自簽證書
openssl req -new -x509 -key/etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 365
其中:
-new: 生成新的證書簽署請求
-key: 私有檔案路徑,用于提取公鑰
-days N : 證書有效時長
-out: 輸出檔案儲存路徑
-x509: 直接輸出自簽署的證書檔案,通常隻有建構CA時,才這麼用
2.3. 給用戶端頒發證書
在需要使用證書的主機上生成證書請求
1. 給web伺服器生成私鑰
(umask 066; openssl genrsa -out/etc/httpd/ssl/httpd.key 2048) 注意:-out指定的路徑是需要使用證書的服務的路徑
2. 生成證書申請檔案
openssl req -new -key/etc/httpd/ssl/httpd.key -days 365 -out /etc/httpd/ssl/httpd.csr 注意:httpd.csr就是請求檔案
3.将證書請求檔案傳輸給CA
4. CA簽署證書,并将證書頒發給請求者:
openssl ca -in/root/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365 注意:httpd.crt為生成的證書
注意:預設國家,省,公司名稱必須和CA一緻,如果是公有CA,那麼公司的位址不一定在一個城市,那麼久需要修改配置檔案了
vim/etc/pki/tls/openssl.cnf
5.檢視生成的證書的資訊:
openssl x509 -in/etc/pki/CA/certs/httpd.crt -noout-text|subject|serial|dates
6.吊銷證書
(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/01.pem
生成吊銷證書的編号(第一次吊銷一個證書時才需要執行)
echo 01 >/etc/pki/CA/crlnumber
更新證書吊銷清單
openssl ca crl-gencrl -out /etc/pki/CA/crl/ca.crl