PKI(Public Key Infrastructure ) 即"公鑰基礎設施",是一種遵循既定標準的密鑰管理平臺,它能夠爲所有網絡應用提供加密和數字簽名等密碼服務及所必需的密鑰和證書管理體系。
認證中心CA 作爲PKI 的核心部分,CA 實現了PKI 中一些很重要的功能,概括地說,認證中心(CA)的功能有:證書發放、證書更新、證書撤銷和證書驗證。CA 的核心功能就是發放和管理數字證書,具體描述如下:
(1)接收驗證最終用戶數字證書的申請。
(2)確定是否接受最終用戶數字證書的申請-證書的審批。
(3)向申請者頒發、拒絕頒發數字證書-證書的發放。
(4)接收、處理最終用戶的數字證書更新請求-證書的更新。
(5)接收最終用戶數字證書的查詢、撤銷。
(6)產生和發佈證書廢止列表(CRL)。
(7)數字證書的歸檔。
(8)密鑰歸檔。
(9)歷史數據歸檔。
我們先來看看如何使用OPENSSL對數據進行加密與解密:
openssl enc -ciphername(算法名稱)
-in filename
the input filename, standard input by default. 輸入文件名,標準的默認輸入。
-out filename
the output filename, standard output by default. 輸出文件名,標準的默認輸出。
-e
encrypt the input data: this is the default. 默認加密輸入的數據。
-d
decrypt the input data. 解密輸入的數據。
現在我們對/tmp下的fstab文件進行加密:
# openssl idea-ofb -in fstab -e -out fstab.secret
這樣就對文件完成加密了,目錄下是不是多了一個fstab.secret這個就是加密後的文件。
我們看看加密文件的內容:
# cat fstab.secret
全身亂碼看不懂吧,這時我們把源文件fstab刪除掉,這樣就很好的起到了保密工作。
# rm -f fstab
現在我們用這個加密的文件,把我們源文件給還原回來。
# openssl idea-ofb -in fstab.secret -d -out fstab
文件回來了吧,而且內容也正常。
其他擴展的openssl命令:
openssl: # openssl version # 加密文件 openssl enc -des3 -in /path/to/somefile -e -out /path/to/somefile.des3 # 解密文件 openssl enc -des3 -in /path/to/somefile.des3 -d -out /path/to/somefile # 一致性校驗 openssl dgst -md5 -hex /path/to/somefile md5sum # 評估加密算法的加密速度 openssl speed # 加密密碼 -salt 參數是在加密前給密碼加上其他字符一併加密 man sslpasswd openssl passwd -1 -salt # 生成隨機密碼 openssl rand -base64 num openssl rand -hex num
如何使用openssl生成一個私鑰:
openssl genrsa -out filename [字符位數]
generate an RSA private key 生成一個RSA 私鑰。
我們現在來生成一個2048位的私鑰:
# openssl genrsa -out mytckey 2048
# chmod 600 mytckey
私鑰是不能隨便讓人看的,所以改下權限,除了自己,所有人都不能看。
提取公鑰:
# openssl rsa -in mytckey -pubout
製作一個證書的簽署請求命令介紹:
openssl
req
PKCS#10 X.509 Certificate Signing Request (CSR) Management. 證書籤署請求管理。
-new
this option generates a new certificate request. 這個選項是生成一個新證書的請求。
-key
This specifies the file to read the private key from. It also accepts PKCS#8 format private keys for PEM format files. 這是指定讀取的私鑰在哪,也支持PKCS#8格式的私鑰,PEM格式的文件。
-out
This specifies the output filename to write to or standard output by default 指定輸出文件名
開始製作:
# openssl req -new -key mytckey -out myreq.csr
接下來要輸入所在國家,省份,城市,部門等信息。
這就創建好了一個證書的簽署請求。
CA纔可以簽署證書
所以我們現在來看下,如何自建CA。
openssl配置文件CA的部分配置:
# cd /etc/pki/CA/
1、爲CA生成一個私鑰:
# (umask 077; openssl genrsa -out private/cakey.pem 4096)
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 3656
自簽證書
# touch serial index.txt
# echo 01 > serial
創建簽證數據庫文件,和序列號文件,並且給serial一個初始序列。
CA自建好了,現在可以給別人簽證了。
我們先來籤一個剛剛我們剛剛做好的請求
# openssl ca -in myreq.csr -out mycert.crt -days 3655
這就給別人簽好了一張證書。
接下來,我們在腳本里實現自建CA和簽署證書的操作:
以下是小菜寫的腳本:
這一塊內容完成,有問題歡迎與我交流QQ1183710107。