我們知道,當用戶端與伺服器端建立會話之前,首先是用戶端發送請求,然後進行TPC/IP的三次握手,接着用戶端與伺服器端建立ssl會話。
會話過程如下:

簡而言之就是:
第一步:用戶端和伺服器雙方共同商量使用什麼加密算法,怎麼加密等等。 第二步:用戶端發送證書給伺服器,目的為了使伺服器相信他。 第三步:伺服器相信了,就生成對稱密鑰,将請求頁面發送給用戶端。 最後,用戶端使用伺服器發送的密鑰加密後,将請求回應給伺服器。
在這個過程中由于伺服器要驗證用戶端身份的真假,是以,這裡需引入了第三方權威頒發機構,即CA,可以給用戶端發證書。而伺服器相信CA的,是以,用戶端擁有CA的證書,進而用戶端就能通路服務端。
接下來,我們就來實作私有CA憑證的認證。
準備工作:兩台主機,centos7做CA憑證,centos6做web伺服器
步驟:一、CA憑證的制作(centos7)
1、檢視是否安裝了openssl軟體
# rpm -qa openssl
2、生成自簽證書
【在/etc/pki/CA目錄下完成】
(1)建立證書索引資料庫和指定第一個證書頒發序列号
(2)生成私鑰
補充:從私鑰中提取公鑰(公鑰是從私鑰提取出來的)
openssl genrsa -in /etc/pki/CA/private/cakey.pem -pubout
(3)生成自簽證書【編輯/etc/pki/tls/openssl.cnf】
補充:私有CA的配置檔案/etc/pki/tls/openssl.conf,内容有: 這裡之介紹我們需要的内容: [ CA_default ] dir =/etc/pki/CA #定義預設CA目錄 certs = $dir/certs #用戶端證書路徑 crl_dir = $dir/crl #證書吊銷清單的路徑 database = $dir/index.txt #儲存已發出去的證書,由于檢索 new_certs_dir = $dir/newcerts # 儲存剛生成的證書 certificate = $dir/cacert.pem # CA自己的證書 serial = $dir/serial # 證書的序列号,預設是從01開始 crlnumber = $dir/crlnumber #證書吊銷清單的工作号 crl = $dir/crl.pem # 證書吊銷清單的檔案 #證書吊銷清單儲存着曾經發出的證書,但是并未過期,而是由于某些原因不能使用了(安全機制) private_key = $dir/private/cakey.pem # 私鑰檔案
是以我們需要在/etc/pki/CA/目錄下建立私鑰檔案,CA憑證、cert、crl、newcerts目錄,建立serial和index.txt檔案。
由此,CA憑證便建立完成。
二、為用戶端頒發證書(centos6)
(1)生成一個私鑰以及證書頒發請求。
(2)将證書頒發請求複制到CA伺服器上
2、簽署證書
3、将證書發送給用戶端(centos7)
三、重新開機web伺服器
#service httpd restart
四、檢視證書
結束了,一個完整的CA自簽證書認證已經完成了。
總結:整個建立證書的步驟:
1、建立私鑰CA:
建立一對密鑰
生成自簽證書
2、用戶端需要:
建立一對密鑰
生成頒發證書請求(請求檔案字尾為.crt)
将請求發給CA
3、CA 簽署該請求,生成證書,再傳給用戶端
本文轉自 優果馥思 51CTO部落格,原文連結:http://blog.51cto.com/youguofusi/1970168