我們知道,當客戶端與服務器端建立會話之前,首先是客戶端發送請求,然後進行TPC/IP的三次握手,接著客戶端與服務器端建立ssl會話。
會話過程:
A --> 服務器端
B --> 客戶端
第一步:AB雙方商量使用什麼加密算法,怎麼加密等等。 第二步:A發送證書給B,為了使B相信他。 第三步:B相信了,就生成對稱密鑰,將請求頁面發送給A。 最後,A使用B發送的密鑰加密後,將請求回應給B。
由於B要驗證A的身份,因此,這裡引入了第三方權威頒發機構,即CA,可以給A發證書。而B是相信CA的,因此,B擁有CA的證書。
則,A生成一對公鑰,發送給CA進行簽署(可以理解為蓋章)得到證書,然後返回給自己,並且配置服務器,使之能使用證書。而B收到A的證書後,使用保存在主機上的CA證書去驗證。
接下來,我們就將實現私有CA的認證。
准備工作:
兩台主機,一個做CA(172.16.13.1),一個做web服務器端(172.16.13.2)。
[注--172.16.13.2主機必須配置完成web服務器]
步驟:
一、CA證書的制作(CA的主機上)
1、查看是否安裝了openssl軟件
# rpm -qa openssl
2、生成自簽證書
【在/etc/pki/CA目錄下完成】
(1)生成私鑰
(2)生成自簽證書
//由於生成證書是需要填寫一些國家,省份等信息。這裡將這些信息直接寫入其默認配置文件中,以後就不用再填寫了。
【編輯/etc/pki/tls/openssl.cnf,】找到大約136行左右:
【生成自簽證書】
//要想將CA作為私有CA使用,則還需要在/etc/pki/tls/openssl.cnf文件中修改默認路徑:
並且將CA工作時所需的目錄創建出來。
由此,CA證書便創建完成
二、配置web服務器為CA客戶端(在172.16.13.2主機上)
1、在/etc/httpd目錄下,創建一個ssl目錄
 
2、在ssl目錄下生成一個私鑰以及證書頒發請求。
3、將證書頒發請求復制到CA服務器上
三、簽署證書(CA服務器上)
使用下邊一條命令進行簽署:
# openssl ca -in /tmp/httpd.csr -out /tmp/httpd.crt -days 3650
四、驗證(CA主機上)
查看/etc/pki/CA目錄下的index.txt以及serial,生成了證書索引
五、將證書發送給客戶端(172.16.13.2)
六、配置服務器能使用此證書
在/etc/httpd/conf.d目錄下的ssl的配置文件ssl.conf
【在大概31行左右,修改其內容】
【在大約114行左右,修改其內容】
七、重啟web服務器
# service httpd restart
八、在浏覽器驗證
1、使用u盤或者遠程連接等工具將CA服務器上/etc/pki/CA/cacert.pem文件拷貝到自己的window桌面。
2、將cacert.pem的後綴名修改為.crt,打開後安裝證書
3、安裝後即可在浏覽器打開我們之前請求證書的頁面。
好啦!一個完整的CA自簽證書認證已經完成了,是不是覺得很神奇呢?那麼就動手制作吧!
本文出自 “對著陽光微笑著” 博客,請務必保留此出處http://dongld.blog.51cto.com/4234800/1175693