實現HTTPS加密通訊

https:http over ssl


SSL會話的簡化過程

(1) 客戶端發送可供選擇的加密方式,並向服務器請求證書
(2) 服務器端發送證書以及選定的加密方式給客戶端
(3) 客戶端取得證書並進行證書驗證如果信任給其發證書的CA

(a) 驗證證書來源的合法性;用CA的公鑰解密證書上數字簽名
(b) 驗證證書的內容的合法性:完整性驗證
(c) 檢查證書的有效期限
(d) 檢查證書是否被吊銷
(e) 證書中擁有者的名字,與訪問的目標主機要一致

(4) 客戶端生成臨時會話密鑰(對稱密鑰),並使用服務器端的公鑰加密此數據發送給服務器,完成密鑰交換
(5) 服務用此密鑰加密用戶請求的資源,響應給客戶端


注意:SSL是基於IP地址實現,單IP的主機僅可以使用一個https虛擬主機

https實現

(1) 爲服務器申請數字證書

可參考我的CA博客https://blog.51cto.com/9019400/2381314

  • CA服務器端
CA和證書頒發
mkdir /data/ssl/ -pv
cd /data/ssl/
( umask 066;openssl genrsa 2048 > cakey.pem )
openssl req -new -x509 -key cakey.pem -out cacert.pem -days 3650
openssl req -newkey rsa:1024 -nodes -keyout httpd.key  > httpd.csr 
openssl x509 -req -in httpd.csr -CA cacert.pem -CAkey cakey.pem -set_serial 01 > httpd.crt
scp -r /data/ssl 192.168.64.150:/etc/httpd/conf.d
  • HTTP端

實現HTTPS加密通訊
httpd服務器配置

yum install mod_ssl #HTTPS依賴此模塊

vim /etc/httpd/conf.d/ssl.conf

DocumentRoot "/data/site1/"
ServerName www.a.com:443
<directory /data/site1>
require all granted
</directory>
SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key
SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem  
#SSLCertificateFile /etc/pki/tls/certs/localhost.crt
#SSLCertificateKeyFile /etc/pki/tls/private/localhost.key  #需註釋掉

現已實現HTTPS,但瀏覽器訪問還會這樣

實現HTTPS加密通訊

所以需要我們手動將根證書導入到電腦

sz /etc/httpd/conf.d/ssl/cacert.pem 
  • 將cacert.pem 重命名cacert.crt

實現HTTPS加密通訊
實現HTTPS加密通訊
實現HTTPS加密通訊
實現HTTPS加密通訊

Ps:在chrome不行,但在360急速瀏覽器可以,尚不知什麼原因

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章