私有CA算法
爲啥要自建私有CA,其使用範圍是?
由於CA的使用費用很高,另外一方面內部通訊加密的須要。數據庫
咱們能夠使用openssl工具生成密鑰,建立數字證書,建立私有CA,手動加密解密數據。安全
如何使用openssl進行建立私有CA? OpenCA也能夠構建CA服務器
openssl命令:配置文件:/etc/pki/tls/openssl.cnfdom
構建私有CA方法:ide
在肯定配置爲CA的服務上生成一個自簽證書,併爲CA提供所須要的目錄及文件便可;工具
具體步驟:this
(1) 生成私鑰;加密
~]# (umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)spa
(2) 生成自簽證書;
~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
參數介紹:
-new:生成新證書籤署請求;
-x509:生成自籤格式證書,專用於建立私有CA時;
-key:生成請求時用到的私有文件路徑;
-out:生成的請求文件路徑;若是自籤操做將直接生成簽署過的證書;
-days:證書的有效時長,單位是day;
(3) 爲CA提供所需的目錄及文件;
~]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
~]# touch /etc/pki/CA/{serial,index.txt}
~]# echo 01 > /etc/pki/CA/serial
注:
如何去CA那裏簽證書呢?
要用到證書進行安全通訊的服務器,須要向CA請求籤署證書:
步驟:(以httpd爲例)
(1) 用到證書的主機生成私鑰;
~]# mkdir /etc/httpd/ssl
~]# cd /etc/httpd/ssl
~]# (umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
(2) 生成證書籤署請求
~]# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
(3) 將請求經過可靠方式發送給CA主機;
(4) 在CA主機上籤署證書;
~]# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
查看證書中的信息:
~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
若是用戶的私鑰丟失了,如何吊銷證書?
吊銷證書:
步驟:
(1) 客戶端獲取要吊銷的證書的serial(在使用證書的主機執行):
~]# openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -serial -subject
(2) CA主機吊銷證書
先根據客戶提交的serial和subject信息,對比其與本機數據庫index.txt中存儲的是否一致;
吊銷:
# openssl ca -revoke /etc/pki/CA/newcerts/SERIAL.pem
其中的SERIAL要換成證書真正的序列號;
(3) 生成吊銷證書的吊銷編號(第一次吊銷證書時執行)
# echo 01 > /etc/pki/CA/crlnumber
(4) 更新證書吊銷列表
# openssl ca -gencrl -out thisca.crl
查看crl文件:
# openssl crl -in /PATH/FROM/CRL_FILE.crl -noout -text
openssl對數據加密
從多子命令,分爲三類:
標準命令
消息摘要命令(dgst子命令)
單向加密:
工具:openssl dgst, md5sum, sha1sum, sha224sum, ...
dgst命令:
~]# openssl dgst -md5 /PATH/TO/SOMEFILE
加密命令(enc子命令)
標準命令: enc, ca, req, genrsa, ...
enc命令:
加密:~]# openssl enc -e -des3 -a -salt -in fstab -out fstab.ciphertext
解密:~]# openssl enc -d -des3 -a -salt -out fstab -in fstab.ciphertext
對稱加密:
工具:openssl enc, gpg
支持的算法:3des, aes, blowfish, towfish
生成用戶密碼:工具:passwd, openssl passwd
openssl passwd -1 -salt SALT
生成隨機數:工具:openssl rand
~]# openssl rand -hex NUM
~]# openssl rand -base NUM
生成密鑰:
生成私鑰:
~]# (umask 077; openssl genrsa -out /PATH/TO/PRIVATE_KEY_FILE NUM_BITS)
提出公鑰:
~]# openssl rsa -in /PATH/FROM/PRIVATE_KEY_FILE -pubout
Linux系統上的隨機數生成器:
/dev/random:僅從熵池返回隨機數;隨機數用盡,阻塞;
/dev/urandom:從熵池返回隨機數;隨機數用盡,會利用軟件生成僞隨機數,非阻塞;
僞隨機數不安全;
熵池中隨機數的來源:
硬盤IO中斷時間間隔;
鍵盤IO中斷時間間隔;