SSL雙向認證以及證書的制作和使用


  1. 客戶端認證服務器:

    正規的做法是:到國際知名的證書頒發機構,如VeriSign申請一本服務器證書,比如支付寶的首頁,點擊小鎖的圖標,可以看到支付寶是通過VeriSign認證頒發的服務器證書:

    我們用的操作系統(windows, linux, unix ,android, ios等)都預置了很多信任的根證書,比如我的windows中就包含VeriSign的根證書,那么瀏覽器訪問服務器比如支付寶www.alipay.com時,SSL協議握手時服務器就會把它的服務器證書發給用戶瀏覽器,而這本服務器證書又是比如VeriSign頒發的,自然就驗證通過了。

     

    國內許多公司的做法:自己做根證書CA(自己充當類似於VeriSign的角色),然后讓用戶下載安裝根CA(當然了,其中只含有公鑰)到機器中,12306就是這樣干的(SRCA就是12306的根證書),然后再自己給自己頒發服務器證書,這樣用戶機器上也有他的CA,服務器發來的服務器證書也是這本CA頒發的,當然也順利通過了。

     

  2. 服務器認證客戶端:

    服務器端通過根CA給客戶端頒發客戶端證書,在制作客戶端證書時加上和機器相關的信息就可以保證在特定的時候某個帳號只能在這台機器上和服務器交換報文,比如我們用支付寶時必須下載安裝數字證書時,可以命名這本證書叫"我的筆記本"或者是"公司電腦"之類的,就是支付寶給用戶頒發證書,只能在這台機器上用,你換了機器就必須重新申請。建立SSL連接時,先是服務器將自己的服務器證書發給客戶端,驗證通過后,客戶端就把自己的客戶端證書發給服務器進行驗證,如果通過,再進行后面的處理。

     

下面來說說如何自己制作根CA證書以及服務器證書和客戶端證書:

 

客戶端安裝服務器根證書ca.crt到客戶端信任證書庫中,服務器端安裝服務器根證書ca.crt到服務器信任證書庫中。

SSL握手時,服務器先將服務器證書server.p12發給客戶端,客戶端會到客戶端信任證書庫中進行驗證,

因為server.p12是根證書CA頒發的,所以驗證通過;然后客戶端將客戶端證書client.p12發給服務器,同理因為client.p12是根證書CA頒發的,所以驗證通過。

 

先下載安裝xca工具,地址是http://xca.hohnstaedt.de/

先用xca創建一本ca證書

xca打開的界面

依次File, New DataBase,選擇xdb文件保存路徑,再輸入密碼

切換到Certificates頁面,點擊New Certificate

出現如下界面

因為要創建根證書,這里選擇序號為1的自認證證書,簽名算法選擇SHA 256,證書模版選擇默認CA,再點擊Apply all(這個不能漏)如下所示:

再切到Subject頁面,填好各個字段,都可以隨便填

再點擊Generate a new key生產私鑰

最后點擊OK,CA證書做好了,有效期默認10年

將根證書導出成只包含公鑰的證書格式,這本根證書就是放在網站上供用戶下載安裝,或主動安裝到客戶機器中的:

 

 

制作服務器證書、客戶端證書和制作CA證書差不多,只有兩個地方不一樣:

  1. 選擇已經制作好的根CA,然后點擊New Certificate

    簽名時,選擇使用根證書,這里是hangzhou進行簽名頒發,然后證書模版選擇服務器(制作客戶端證書就選擇HTTPS_client),其他都和制作根證書一樣,然后點擊Apply all(這個一定不能忘),然后再切到Subject、Extension頁面填寫相應的東西就OK了

    制作完成:

    然后再將服務器證書導出來,選擇p12格式

    同理制作客戶端證書,並將之導出,也是p12格式的證書,包含私鑰。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM