PKI架構的簡介,如何使用OPENSSL完成加密與解密,如何自建CA完成證書的簽署。

        PKI(Public Key Infrastructure ) 即"公鑰基礎設施",是一種遵循既定標準的密鑰管理平臺,它能夠爲所有網絡應用提供加密和數字簽名等密碼服務及所必需的密鑰和證書管理體系。

        認證中心CA 作爲PKI 的核心部分,CA 實現了PKI 中一些很重要的功能,概括地說,認證中心(CA)的功能有:證書發放、證書更新、證書撤銷和證書驗證。CA 的核心功能就是發放和管理數字證書,具體描述如下:
  (1)接收驗證最終用戶數字證書的申請。
  (2)確定是否接受最終用戶數字證書的申請-證書的審批。
  (3)向申請者頒發、拒絕頒發數字證書-證書的發放。
  (4)接收、處理最終用戶的數字證書更新請求-證書的更新。
  (5)接收最終用戶數字證書的查詢、撤銷。
  (6)產生和發佈證書廢止列表(CRL)。
  (7)數字證書的歸檔。
  (8)密鑰歸檔。
  (9)歷史數據歸檔。

wKioL1N9mQPjRjI4AAMOfsN60PE465.jpg

我們先來看看如何使用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這個就是加密後的文件。

wKioL1N9qOGxYqNGAAD1TMGA0ZM508.jpg

我們看看加密文件的內容:

# cat fstab.secret

全身亂碼看不懂吧,這時我們把源文件fstab刪除掉,這樣就很好的起到了保密工作。

# rm -f fstab

wKioL1N9qXTyYYMgAAMgc2oHLTk306.jpg

現在我們用這個加密的文件,把我們源文件給還原回來。

# openssl idea-ofb -in fstab.secret -d -out fstab

文件回來了吧,而且內容也正常。

wKiom1N9q7rjABpDAAL3sDIkv1c350.jpg


其他擴展的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

私鑰是不能隨便讓人看的,所以改下權限,除了自己,所有人都不能看。

wKioL1N9s4rCUfukAAD8svxASso680.jpg

提取公鑰:

# openssl rsa -in mytckey  -pubout

wKiom1N9tnuhYwiRAAImn3P93eM107.jpg

製作一個證書的簽署請求命令介紹:

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

接下來要輸入所在國家,省份,城市,部門等信息。

這就創建好了一個證書的簽署請求。

wKioL1N_ENngQkdjAANDnGJsDCM137.jpg

CA纔可以簽署證書

所以我們現在來看下,如何自建CA。

openssl配置文件CA的部分配置:

wKiom1OBa5zAXAZuAAQVvPFxgEI878.jpg

# cd /etc/pki/CA/

1、爲CA生成一個私鑰:

# (umask 077; openssl genrsa -out private/cakey.pem 4096)

wKioL1N_FFqDPba0AAO8QspF-DU172.jpg

 # openssl req -new -x509 -key private/cakey.pem  -out cacert.pem -days 3656 

自簽證書

# touch serial index.txt

# echo 01 > serial

創建簽證數據庫文件,和序列號文件,並且給serial一個初始序列。

CA自建好了,現在可以給別人簽證了。

wKioL1OBdt_Bh4kbAAJWslW1iSY754.jpg

我們先來籤一個剛剛我們剛剛做好的請求

# openssl ca -in myreq.csr  -out mycert.crt -days 3655

這就給別人簽好了一張證書。

wKioL1OBltrCMxcgAAKOiVgkzLM076.jpg

 接下來,我們在腳本里實現自建CA和簽署證書的操作:

以下是小菜寫的腳本:

wKiom1OCGQ3wXYukAAPwcvuiDbY374.jpg

這一塊內容完成,有問題歡迎與我交流QQ1183710107。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章