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端
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,但瀏覽器訪問還會這樣
所以需要我們手動將根證書導入到電腦
sz /etc/httpd/conf.d/ssl/cacert.pem
- 將cacert.pem 重命名cacert.crt