基於OpenSSL實現C/S架構中的https會話

weixin_33860553發表於2016-10-08
在實際生產中實現公司內部的web伺服器加密訪問時,我們就需要實現公司內部的私鑰CA,並且完成對web伺服器的簽署請求,這樣我們就可以在自身的內部機構實現對資料的機密性、完整性、身份驗證的訪問與傳輸
實驗的準備:實驗是在vm9上完成的,一共用了兩臺虛擬機器;一臺在CA簽署伺服器(IP地址是172.16.51.18),另一臺是web伺服器(IP地址是172.16.51.17)
私有CA的實現包括有自身私鑰的生成、生成自簽證書、準備相關的檔案
實現私有CA的準備
為CA提供私鑰
 
生成自簽證書
生成自簽證書的時候,會讓我們填寫一些資訊,例如國家,省,市,公司名稱等這些資訊可以直接在/etc/pki/tls/openssl.cnf配置檔案中更改這些預設的資訊。
修改/etc/pki/tls/openssl.cnf配置檔案中關於證書存放位置,並檢視CA證書所需要的檔案及目錄
手動建立certs crl newcerts目錄並建立index.txt檔案與serial檔案(並指定起始號)
現在一個我們自簽署的CA就可以使用了
web伺服器端的準備
首先自己要準備好web服務,安裝httpd軟體包就可以了,要實現ssl功能需要安裝ssl模組,所以模組要確保安裝上
安裝ssl模組
yum install mod_ssl
為web伺服器的證書申請以及金鑰檔案存放建立一個特定的目錄
mkdir /etc/httpd/conf/ssl
cd /etc/httpd/conf/ssl
把公鑰包裝成證書申請請求,向CA申請簽署;首先要自己生成一個私鑰(存放金鑰的檔案許可權是600的)
重新啟動httpd服務,載入新新增的模組
service httpd restart
簽署請求申請前檢視自己的FQDN,沒有指定的可以直接更改/etc/hosts配置檔案新增一條對應關係就可以了
生成證書籤署請求把簽署請求傳送給CA伺服器端(現實中為了確保其安全性,需要手動複製簽署請求到CA認證機構去簽署;避免在網路傳輸中資料洩露)
現在直接使用scp傳送到CA伺服器端
在CA伺服器端完成簽署
簽署完成後檢視CA機構的證書相關檔案的變化
在web伺服器端把簽署的證書複製過來
scp 172.16.51.18:/tmp/httpd.crt /etc/httpd/conf/ssl/
證書籤署後為了安全刪除CA端的檔案
rm -rf httpd.crt
rm -rf httpd.csr
更改web伺服器的/etc/httpd/conf.d/ssl.conf配置檔案
中心主機的設定
金鑰及證書檔案位置的指定
建立/var/www/html目錄下的主頁index.html,並且新增一些內容,方便後面的驗證
一切都修改完成後檢查一下語法錯誤並且重啟一下httpd服務
httpd –t
service httpd restart
把CA的證書傳遞給物理主機一份,進行測試
複製/etc/pki/CA/cacert.pem到物理主機,複製到windows系統後把cacert.pem檔案的名稱更改成cacert.crt
點選安裝證書按鈕,將證書安裝到受信任的節點中,然後就可以實現對web伺服器的加密訪問了

相關文章