本節索引
一、https協議介紹
二、實驗:實現https
三、http重定向https
四、云主機實現免費的https
一、https協議介紹
HTTPS(全稱:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全為目標的
HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳
細內容就需要SSL。?https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默認端口及一個加密
身份驗證層(在HTTP與TCP之間)。
發展歷史:
這個系統的最初研發由網景公司(Netscape)進行,并內置于其瀏覽器Netscape Navigator中,提供了身份
驗證與加密通訊方法?,F在它被廣泛用于網絡安全敏感的通訊,例如交易支付方面。
主要作用:
1、建立一個信息安全通道,來保證數據傳輸的安全;
2.、確認網站的真實性,凡是使用了 https 的網站,都可以通過點擊瀏覽器地址欄的鎖頭標志來查看網站
認證之后的真實信息,也可以通過 CA 機構頒發的安全簽章來查詢?[2]??。
HTTPS與HTTP的區別:
1、https協議需要到ca申請證書,一般免費證書很少,需要交費。
2、http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。
3、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
4、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證
的網絡協議,比http協議安全。
SSL會話的簡化過程:
(1) 客戶端發送可供選擇的加密方式,并向服務器請求證書
(2) 服務器端發送證書以及選定的加密方式給客戶端
(3) 客戶端取得證書并進行證書驗證
如果信任給其發證書的CA
(a) 驗證證書來源的合法性;用CA的公鑰解密證書上數字簽名
(b) 驗證證書的內容的合法性:完整性驗證
(c) 檢查證書的有效期限
(d) 檢查證書是否被吊銷
(e) 證書中擁有者的名字,與訪問的目標主機要一致
(4) 客戶端生成臨時會話密鑰(對稱密鑰),并使用服務器端的公鑰加密此數據發送給服務器,完成密鑰交換
(5) 服務用此密鑰加密用戶請求的資源,響應給客戶端
注意:SSL是基于IP地址實現,單IP的主機僅可以使用一個https虛擬主機
二、實驗:實現https
前期準備:
兩臺虛擬機
CA: ? ? ? CentOS 7.4????? IP:192.168.30.10???
客端戶:CentOS 6.9????? IP:192.168.30.11
實驗預期:
CA服務器為客戶端頒發證書,使其能夠實現https訪問
具體步驟:
CA端:
生成私鑰
(umask 077;openssl genrsa -out etc/pki/CA/private/cakey.pem 2048)
自簽名證書
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3650
交互式填寫
國家:CN
省份:beijing
城市:beijing
公司名稱:wxlinux
部門:opt
Common name:wxlinux.com
Client端:
生成客戶端私鑰
(umask 066;openssl genrsa -out httpd.key 1024)
生成證書申請
openssl req -new -key httpd.key -out httpd.csr
交互式填寫
國家:CN
省份:beijing
城市:beijing
公司名稱:wxlinux
部門:opt
Common name:http.wxlinux.com
注:國家,省份,公司必須一致才能申請成功
將證書申請發送到CA
scp httpd.csr 192.168.30.10:/root/
CA端:
建立已頒發證書信息列表文件;V:生效;R:吊銷;
touch /etc/pki/CA/index.txt
建立證書序列號
echo 0F > /etc/pki/CA/serial?????
頒發證書
openssl ca -in httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 730
將證書及CA自授權證書發送到客戶端:
scp /etc/pki/CA/certs/httpd.crt 192.168.30.11:/root/
scp /etc/pki/CA/cacert.pem 192.168.30.11:/root/
Client端:
安裝加密模塊
yum install mod_ssl –y
rpm -ql mod_ssl
修改配置文件其中此三行
vim /etc/httpd/conf.d/ssl.conf
SSLCertificateFile /etc/httpd/conf.d/ssl/httpd.crt
SSLCertificateKeyFile /etc/httpd/conf.d/ssl/httpd.key
SSLCACertificateFile /etc/httpd/conf.d/ssl/cacert.pem
重啟httpd服務
service httpd restart
此時打開瀏覽器已能夠正常訪問https://192.168.30.11/
顯示不安全的頁面,這是由于證書未添加到瀏覽器信任造成的
將CA自簽名證書導入到瀏覽器即可安全訪問
三、http重定向https
當我們區域https協議后,就出現了一個問題,此時http與https是可以同時被訪問的,那么當用戶用http訪
問網站時,還是有安全隱患的,如何解決呢?我們只需要將http重定向到https即可
實現http請求轉發至https的URL方法如下:
方法一:重定向
備注:有安全隱患,每次請求還會先走http協議
Redirect [status] URL-path URL
status狀態:
permanent: ?永久301
Temp: ? ? ? ?臨時302
示例:
Redirect temp / https://www.magedu.com/
方法二:HSTS
備注:僅第一次訪問會走http協議,建議使用此種方法
HSTS:HTTP Strict Transport Security
服務器端配置支持HSTS后,會在給瀏覽器返回的HTTP首部中攜帶HSTS字段。瀏覽
器獲取到該信息后,會將所有HTTP訪問請求在內部做307跳轉到HTTPS。而無需任何
網絡過程
HSTS preload list
作用:使第一次訪問也走https協議
是Chrome瀏覽器中的HSTS預載入列表,在該列表中的網站,使用Chrome瀏覽器訪
問時,會自動轉換成HTTPS。Firefox、Safari、Edge瀏覽器也會采用這個列表
實現HSTS示例:
vim /etc/httpd/conf/httpd.conf
Header always set Strict-Transport-Security “max-age=31536000”
RewriteEngine on
RewriteRule ^(/.*)$ https://%{HTTP_HOST}$1 [redirect=302]
curl -I? www.taobao.com
Strict-Transport-Security: max-age=31536000
四、云主機實現免費的https
現在許多云服務廠商都提供了免費的域名型加密SSL證書,僅對域名所有權進行驗證,快速頒發,較好保
護網站數據安全,適合個人,小微企業應用。
本次就以在騰訊云申請免費SSL證書為例:
騰訊云官方網站:https://cloud.tencent.com
1登錄進入頁面后點擊上方+號,添加SSL證書管理
2點擊申請證書,顯示證書頒發機構為亞洲誠信(TRUSTASIA),證書有效期為一年
3.點擊確定后,會要求輸入域名,申請郵箱等信息,按需填寫即可
4.接下來會進行域名身份驗證,這里我們選擇選擇手動DNS驗證
5.點擊確認申請,生成解析記錄
接下來我們需要等待10分鐘左右證書審核通過
6.回到我們的域名DNS管理頁,添加一條TXT/SPF的解析
HOSTNAME填寫騰訊云解析記錄中的主機記錄
TEXT填寫記錄值
7.證書申請完成后,就可以點擊下載了
8.根據自己web服務類型,進行后續配置
騰訊云官方證書安裝方法指引文檔:https://cloud.tencent.com/document/product/400/4143
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/101350