CA,Catificate Authority,通俗的了解就是一種認證機制。它的作用就是提供證書(也就是服務端證書,由域名,公司資訊,序列号,簽名資訊等等組成)來加強用戶端與伺服器端通路資訊的安全性,同時提供證書的發放等相關工作。國内的大部分網際網路公司都在國際CA機構申請了CA憑證,并且在使用者進行通路的時候,對使用者的資訊加密,保障了使用者的資訊安全。理論上來說,任何組織或者個人都可以扮演CA的角色,隻不過,難以得到用戶端的信任,不能推而廣之,最典型應用莫過于12306網站,這個網站就是自己給自己頒發的根證書。 目前能夠讓浏覽器預設支援的CA大廠有很多,Windows 作業系統在安裝之初,也預設安裝了很多受信任的根證書。可以通過控制台–Internet選項來進行檢視。
SSL/TLS是網絡通信過程中非常重要的兩個協定。網際網路的通信安全就建立在SSL/TLS協定基礎之上。他們通過一系列的加密行為保障了通信的安全,是如今網際網路通信最主要的應用之一。
SSL/TLS是一個很大的網際網路應用,關于他們的介紹網際網路上有很多,我們暫時不做詳細的介紹。關于SSL/TLS通信的過程大緻可以用下面的這張圖來進行描述。
OpenSSL是一套開源軟體,在Linux中可以很容易的安裝。它能夠很容易的完成密鑰生成以及證書管理。我們接下來就利用OpenSSL搭建CA憑證,并實作證書的申請與分發。
實驗環境的準備 CA的配置介紹 建立所需要的檔案 CA 自簽名證書 頒發證書 檢視證書狀态 證書吊銷
首先我們應該準備三個虛拟機,他們分别用來表示根CA憑證機構,以及子CA憑證機構,和證書申請使用者。 那麼問題來了,使用者向子CA憑證機構申請證書,子CA機構向根CA機構申請授權,根CA是如何取得證書的呢?答案是根CA自己給自己頒發的證書。 實驗環境的拓撲結構如下圖所示。
要手動建立CA憑證,就必須首先了解,OpenSSL中關于CA的配置,配置檔案位于下面的/etc/pki/tls/openssl.cnf
這裡有一點需要注意,我們的實驗環境中包含了三個主機,其中兩個的角色是作為CA認證機構存在的,是以建立所需要的檔案的時候,主機A和主機B都需要建立。 如果不提前建立這兩個檔案,那麼在生成證書的過程中會出現錯誤。 我們将檔案建立在配置檔案中指定的路徑下面。 生成證書索引資料庫檔案 <code>touch /etc/pki/CA/index.txt</code> 指定第一個頒發證書的序列号 <code>echo 01 > /etc/pki/CA/serial</code>
首先構造根CA的證書。因為沒有任何機構能夠給根CA頒發證書,是以隻能根CA自己給自己頒發證書。
私鑰檔案是非常重要的檔案,除了自己本身以外,其他任何人都不能取得。是以在生成私鑰檔案的同時最好修改該檔案的權限,并且采用加密的形式進行生成。
頒發證書這裡我們将分成兩個環節介紹,分别是 子CA憑證機構向根CA憑證機構申請證書以及普通使用者向子CA憑證機構申請證書。
A 在需要使用證書的主機上生成證書請求
首先在B主機上生成私鑰,這一個過程與前面根CA機構生成私鑰的過程是一緻的。
利用私鑰檔案,生成證書申請檔案。
B 将證書的申請檔案,傳遞給根CA
将前一步生成的證書的申請檔案,傳遞給根CA機構
C CA頒發證書
此時切換到根CA主機,生成證書
D 将根CA生成的證書頒發給請求者
這一個過程,與子CA向根CA申請證書的過程是類似的。我們将指令的記錄如下
這樣,正常的證書頒發流程就算是完成了。将我們生成的根證書,子CA憑證以及普通使用者證書導出到Windows系統中,并安裝,然後我們就可以看到,整個證書路徑了。如下圖所示。
檢視證書狀态,使用下面這條指令 ,可以檢視證書的内容以及頒發者的多種資訊。
這裡我們将子CA的證書吊銷掉。
A 首先在子CA主機上擷取到要吊銷的證書的serial
前面的例子中,我們的子CA憑證的存放路徑是<code> /etc/pki/CA/certs/subca.crt</code>
B 在根CA上根據客戶送出的serial與subject資訊,對比檢驗是否與index.txt檔案中的資訊一緻,然後吊銷證書
C 指定第一個吊銷證書的編号
指定吊銷證書的編号,隻有在更新證書吊銷清單之前,才需要操作
D 更新證書吊銷清單
前面指定了證書吊銷清單編号之後,就可以來更新證書吊銷清單了。
檢視證書吊銷清單的檔案
在實際的使用過程中,有很多這樣的執行個體。例如我們經常使用的淘寶,在使用浏覽器通路淘寶的時候,就可以檢視淘寶的證書吊銷清單。如下圖所示。
至此,關于自己搭建CA的過程基本上就完成了。熟悉了上面的操作之後,就可以自己動手簡單的搭建一個證書了,然後也可以體驗一下整個流程
<a href="http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html" target="_blank">http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html</a>
<a href="http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html" target="_blank">http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html</a>
<a href="http://kb.cnblogs.com/page/197396/" target="_blank">http://kb.cnblogs.com/page/197396/</a>
本文轉自Eumenides_s 51CTO部落格,原文連結:http://blog.51cto.com/xiaoshuaigege/1965113,如需轉載請自行聯系原作者