我們知道,當客戶端與服務器端建立會話之前,首先是客戶端發送請求,只有通過TPC/IP三次握手後,客戶端與服務器端才能建立ssl會話。握手的過程簡單的說也可以總結爲三個步驟,第一步:客戶端和服務器雙方共同商量使用什麼加密算法以及加密等等。 第二步:客戶端發送證書給服務器,目的是爲了讓服務器相信他。 第三步:服務器相信了,就生成對稱密鑰,將請求頁面發送給客戶端。 最後,客戶端使用服務器發送的密鑰加密後,將請求迴應給服務器。在這個過程中由於服務器要驗證客戶端身份的真假,因此,這裏需引入了第三方權威頒發機構,即CA,可以給客戶端發證書。服務器是相信CA的,因此,客戶端擁有CA的證書,從而客戶端就能訪問服務端。關於CA在這裏我們需要了解:
1、SSL所使用的證書可以自己生成,也可以通過一個商業性CA(如Verisign 或 Thawte)簽署證書。
2、證書的概念:首先要有一個根證書,然後用根證書來簽發服務器證書和客戶證書,一般理解:服務器證書和客戶證書是平級關係。在SSL必須安裝根證書和服務器證書來認證。 因此,就必須至少要有三個證書:根證書,服務器證書,客戶端證書。 在生成證書之前,一般會有一個私鑰,同時用私鑰生成證書請求,再利用證書服務器的根證來簽發證書。
接下來,我們就來簡述一下在linux下搭建CA認證服務器並實現私有CA證書的認證的過程
步驟:
一、CA證書的製作(centos7)
1)進入/etc/pki/tls/openssl.cnf 並瞭解CA證書的系統文件內容
創建
2)在Centos7上生成自籤根證書
1、在/etc/pki/CA下創建數據庫索引文件index.txt、序列號記錄文件serial並指定頒發證書序列號
2、生成CA證書私鑰,包括設置當前umask值、私鑰保存路徑/etc/pki/CA/private及名稱cakey.pem、密碼-des3加密方式及長度2048等
3、從cakey.pem私鑰中提取出公鑰並指定名稱cacert.pem,並指定CA機構的有效期(公鑰中要設置國家、省份、城市名、公司名、公司部門、服務器名稱、郵件地址等)
由此,CA證書便創建完成。
3)在Centos6上搭建子CA證書
1、在/etc/pki/CA下創建數據庫索引文件index.txt、序列號記錄文件serial並指定頒發子CA證書序列號
2、生成CA證書私鑰,包括設置當前umask值、私鑰保存路徑/etc/pki/CA/private及名稱cakey.pem、密碼-des3加密方式及長度2048等
3、從cakey.pem私鑰中提取公鑰並指定名稱subca.csr,公鑰中要設置的國家、省份、城市名、公司名、公司部門、服務器名稱、郵件地址等,其中國家、省份、公司名必須與根CA一致,而服務器名稱必須不一致,其他選項不要求。
4、將Centos6生成的公鑰傳給根CA的/etc/pki/CA路徑下
5、根CA對subca.csr 文件進行簽名,並設置子CA的有效期,並生成一個新的 保存在certs/subca.crt下
6、將簽名完成的subca.crt子CA證書文件回傳給子CA Centos6的/etc/pki/CA路徑下,並改名爲cacert.pem
由此,子CA證書也就創建完成。
4)爲客戶端(Centos5)頒發證書
1、在任意目錄下生成自己客戶端的私鑰,私鑰文件名稱無要求,也可以不加密
2、用私鑰rhel5.key文件生成證書請求文件rhel5.csr,文件中要設置的國家、省份、城市名、公司名、公司部門、服務器名稱、郵件地址等,其中國家、省份、公司名必須與子CA一致,而服務器名稱必須不一致,其他選項不要求。
3、將生成的rhel5.csr文件傳給子CA(Centos6)並進行簽名
4、在Centos6上對客戶端(Centos5)請求文件rhel5.csr進行簽名,產生的新文件保存在certs/目錄下,並命名爲rhel5.crt
5、將簽名完成的rhel5.crt文件回傳給客戶端(Centos5)
由此,客戶端證書也已搭建成功。
5)查看證書
1、安裝根CA證書
2、安裝子CA證書
3、完成安裝,查看
好的,到這裏就結束了,一個完整的CA自簽證書認證就已經完成了。