實驗概述
網際網路巨頭雅虎官方對外釋出消息,承認在2014年的一次黑客襲擊中,至少5億使用者的資料資訊遭竊。此次事件讓我們再次意識到網站安全的重要性,網站加密防護的必要性。我們可以使用HTTPS協定對網站進行全站加密,但是,大部分使用者已經習慣直接輸入域名(即使用 HTTP 協定)通路網站。是以,企業需要将使用者的 HTTP 請求轉化為 HTTPS 請求進行通路。這個問題在傳統的 IT 架構中已經得到解決,但是在雲上如何解決 HTTP 與 HTTPS 的混合通路?
本實驗使用負載均衡配置監聽,利用Nginx實作HTTP請求向HTTPS請求的轉化,進而完成HTTP和HTTPS的混合通路。
HTTP請求轉化為HTTPS請求架構圖

實驗目标
完成此實驗後,可以掌握的能力有:
1)使用負載均衡配置HTTP和HTTPS監聽,支援HTTP請求和HTTPS請求的混合通路;
2)使用Nginx将HTTP請求轉化為HTTPS請求;
一、實驗背景
1.1 背景知識
HTTPS 協定 HTTPS 能夠加密資訊,以免敏感資訊被第三方擷取。是以很多銀行網站或電子郵箱等等安全級别較高的服務都會采用 HTTPS 協定。
基本概念
HTTPS 是更安全的 HTTP 協定,它在 TCP(負責網絡資料傳輸)和 HTTP層 之間,增加了一個 SSL 層。這一層通過數字證書和加密算法對 HTTP 請求進行加密。已經采用 HTTP 協定的網站要過渡到 HTTPS,将在技術改造、伺服器資源、流量資源上付出更多成本。
工作流程 HTTPS 其實是有兩部分組成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一層處理加密資訊的子產品。服務端和用戶端的資訊傳輸都會通過 TLS 進行加密,是以傳輸的資料都是加密後的資料。
負載均衡監聽
負載均衡提供四層(TCP/UDP協定)和七層(HTTP/HTTPS協定)監聽,您可根據應用場景選擇監聽協定:
負載均衡四層監聽将請求直接轉發到後端ECS執行個體,而且不修改标頭。
負載均衡七層監聽原理上是反向代理的一種實作,用戶端HTTP請求到達負載均衡監聽後,負載均衡伺服器會通過與後端ECS建立TCP連接配接,即再次通過新TCP連接配接HTTP協定通路後端,而不是直接轉發封包到後端ECS。
二、實驗詳情
2.1 實驗資源
在彈出的左側欄中,點選 建立資源 按鈕,開始建立實驗資源。 資源建立過程需要1-3分鐘。完成實驗資源的建立後,使用者可以通過 實驗資源 檢視實驗中所需的資源資訊,例如:阿裡雲賬号等。
2.2 使用HTTP請求檢視網站伺服器
本小節主要内容:直接通過 ECS 執行個體的 IP 位址,通路并檢視已部署的 Web 網站。
- 通過如下步驟,檢視 實驗資源 中 Web伺服器01 的網站資訊:
1)點選左側導航欄 實驗資源 ,并拷貝 Web伺服器01 的 外網位址 。
2)建立一個浏覽器頁面,并輸入 Web伺服器01 的 外網位址 ,浏覽網站 LAB013 ROOM 。
- 參考如上步驟,在浏覽器中,輸入 Web伺服器02 的 外網位址 ,并通路 Web伺服器02 網站。
-
阿裡雲雲計算ACP實驗考試之使用負載均衡實作https與http的混合通路 - 可以檢視到兩台伺服器的内容完全一緻。一般情況下,為了保證企業業務的持續性,企業會将生産環境部署到兩台相同的伺服器中。這樣在高并發時,通過負載均衡可以将網站的流量分發到不同的伺服器後端,進而提升使用者體驗。
2.3 負載均衡中添加HTTP和HTTPS監聽
本小節主要内容:在負載均衡(SLB)中添加 HTTPS 和 HTTP 協定監聽
- 首先,通過如下步驟,通路阿裡雲負載均衡(SLB)管理控制台:
1)點選頁面左側導航欄 實驗資源 ,并點選 前往控制台 。
2)在打開的阿裡雲 RAM使用者登入 頁面中,分别輸入 實驗資源 中提供的 子使用者名稱 、子使用者密碼 ,并點選 登入 :
注意:若登入資訊錯誤,請檢視 企業别名 是否與 實驗資源 提供的 阿裡雲主賬号企業别名 相同。
3)在阿裡雲管理控制台,點選頂部導航欄處的 産品與服務 ,下拉清單中,依次選擇 雲計算基礎服務 ---> 彈性計算 ---> 負載均衡 ,進入負載均衡的管理控制台。
2. 通過如下步驟,進入 實驗資源 提供的 負載均衡 執行個體的管理頁面:
1)在執行個體管理頁面,頂部的位址欄中,選擇 實驗資源 提供的 位址 ,例如:華東1 。
2)在位址欄下面的搜尋欄中,選擇 負載均衡ID ,并輸入 實驗資源 中 負載均衡 的 執行個體ID ,點選 搜尋 。
3)在搜尋欄下,檢視搜尋結果,并點選執行個體右側的 管理 ,進入 負載均衡 執行個體的管理頁面。
3. 通過如下步驟,添加 負載均衡 的 HTTPS 協定的監聽。
1)在負載均衡執行個體頁面,點選下側欄的 監聽 。
2)在執行個體監聽頁面,點選右側 添加監聽 。
3)在 基本配置 頁面,配置如下資訊:前端協定[端口]:選擇 HTTPS ,并填寫端口号為 443 ;
伺服器證書 :選擇已有伺服器證書 lab-ca 。說明:SLB 的伺服器證書是本實驗已提供的公共資源。SLB 的證書上傳的具體操作步驟,請參考章節 上傳證書。
其餘配置資訊保持預設,完成如上配置後,點選 下一步 。
通過添加,把提供的兩台ECS伺服器放到SLB資源池。
确認後,在伺服器後端,填寫80,然後點選下一步
說明:本實驗中不會對添加的 ECS 執行個體進行健康檢查,但是,在真實的工作環境中,強烈建議使用者開啟健康檢查。健康檢查的操作和使用,請參考實驗 SL010 使用SLB實作持續性高并發通路 。
5)等待 3-5 秒,提示 恭喜,監聽配置成功 ,完成後,點選 确認 。
6)傳回監聽配置頁面,檢視到建立 HTTPS:443 監聽的 狀态 為 運作中 。此時,HTTPS協定監聽添加成功。
4. 通過如下步驟,添加 負載均衡 的 HTTP 協定的監聽。1)再次點選頁面下側的 添加監聽 。
2)在 基本配置 頁面,配置如下資訊:前端協定[端口]:選擇 HTTP ,并填寫端口号為 80 ;
後端伺服器組,選擇預設伺服器組後端協定[端口]:預設使用 HTTP ,填寫端口号為 88 ; 其餘配置資訊保持預設,完成如上配置後,點選 下一步 。
說明:本實驗中使用 88 端口進行判定和轉發的,在真實的工作環境中,使用者請根據實際情況設定端口資訊。3)在健康檢查配置中,關閉 健康檢查,完成後,點選 确認 。
4)等待 1-3 秒,提示監聽配置成功 ,完成後,點選 确認 。5)在監聽配置中,可以檢視到建立監聽 HTTP:80 。
2.4 分别檢視兩種請求的通路效果
本小節主要内容:測試負載均衡的監聽是否生效。
- 驗證 HTTP 協定監聽:在浏覽器中建立一個頁面,輸入 實驗資源 提供的 負載均衡 的 IP位址 。此時,頁面提示 502 錯誤。證明 HTTP 協定監聽開啟,但是無法正常通路網站。
說明:HTTP請求沒有經過加密,需要在之後的的步驟中進行配置,将它轉化為HTTPS請求才能夠通路。
2. 通過如下步驟,驗證 HTTPS 協定監聽:
1)在浏覽器中,建立頁面,并輸入 https://xxx.xxx.xxx.xxx (其中 xxx.xxx.xxx.xxx 為 實驗資源 提供的 負載均衡 的 IP位址 )。
注意:必須輸入 https:// ,否則會出現通路錯誤。
2)頁面提示 您的連接配接不是私密連接配接 ,點選頁面下端的 進階 。
說明:由于本實驗使用的是公共證書,是以會出現這樣的提示。在真實的工作環境中,若上傳到SLB的證書是有效的,則不會出現這樣的提示。請參考章節:上傳證書。
3)展開資訊提示證書的相關資訊,點選 繼續前往xxx.xxx.xxx.xxx(不安全) 。
4)頁面顯示 LAB013 ROOM 網站,證明 HTTPS 監聽配置成功,且使用者可以通過 HTTPS 通路到後端伺服器部署的網站
2.5 HTTP請求轉化為HTTPS請求
本小節主要内容:通過重定向的方式将來自 HTTP 請求轉發到 HTTPS,實作使用者直接通過輸入負載均衡 IP 位址就可以直接通路網站。
- 通過本地遠端連接配接服務,遠端登入到 我的實驗資源 中的 Web伺服器01 ECS執行個體。
說明:遠端連接配接的詳細操作步驟,請參考 幫助文檔 。登入時,請使用 實驗資源 提供的 外網位址 ,使用者 和 密碼。
2. 通過如下步驟,修改 Nginx 配置檔案:将所有 88 端口請求,都轉發到負載均衡的 HTTPS 協定的 IP 通路位址:
1)輸入如下指令,進入 Nginx 配置檔案的編輯頁面。
vim /etc/nginx/nginx.conf
2)鍵盤輸入 i ,進入 編輯 模式。
3)清空 85 行到 94 行的注釋 # ,如下圖所示:
4)修改 rewrite 的參數資訊,将 xxx.xxx.xxx.xxx 替換為 實驗資源 提供的 負載均衡 的 IP位址 。說明:在真實的工作環境中,若使用域名通路,請将此處的 https://xxx.xxx.xxx.xxx 替換為 https 協定通路的域名。例如:https://lab.aliyunedu.net。
5)完成如上修改後,在鍵盤中點選 esc ,退出編輯模式。
6)輸入以下指令 ,儲存并退出 nginx.conf 的編輯頁面。
:wq
- 執行如下指令,重新開機Nginx。
-
service nginx restart
- 參考如上步驟,修改 Web伺服器02 的資訊。
1)登入到 實驗資源 提供的 Web伺服器02 。
2)修改 Nginx 配置檔案
vim /etc/nginx/nginx.conf
3)重新開機 Nginx 伺服器:
service nginx restart
- 完成如上配置後,通過如下步驟,驗證通過負載均衡的 HTTP 通路網站,是否可以自動跳轉到 HTTPS 通路:
1)在浏覽器中,輸入并通路 負載均衡 的 IP位址 。
2)可以看到,直接跳轉到 https 協定通路頁面,點選 繼續通路 。
說明:建議使用另一個浏覽器檢視結果,因為會由于頁面的緩存問題,将不會顯示下圖所示的頁面。
3)頁面顯示 LAB013 ROOM 網站。
三、技能提升
3.1 購買伺服器證書
本小節主要内容:在阿裡雲的 證書服務 ,購買一個伺服器證書。
說明:本章不提供實操資源,僅供閱讀與學習。
- 通過如下步驟,購買一個阿裡雲的免費證書:
1)通過在阿裡雲管理台,進入 證書服務 的管理控制台。
2)點選右上角的 購買證書 。
3)在證書購買頁面,證書類型 選擇 免費DV SSL 。
4)其餘保持預設,完成後,點選 立即購買 。
5)點選 去支付 。 6)點選 确認支付 。 7)提示 恭喜,支付成功 ,關閉購買頁面。
- 傳回 證書服務 管理控制台,在我的訂單中,檢視到新購買的證書 狀态 為 待完成 。
-
阿裡雲雲計算ACP實驗考試之使用負載均衡實作https與http的混合通路 - 通過如下步驟,在本地伺服器上生成證書的 .csr 檔案和 .key 檔案。
1)在本地Linux作業系統的伺服器中,執行如下指令,生成 2048 位的加密私鑰。
openssl genrsa -out ca.key 2048
2)執行如下指令,生成 證書簽名請求(CSR)。
openssl req -new -key ca.key -out ca.csr
請參考下圖,輸入參數資訊。
注意:Common Name 為伺服器綁定的域名。
4. 通過如下步驟,補全阿裡雲上購買的證書資訊:1)傳回阿裡雲 證書服務 的管理控制台,并點選新購證書右側的 補全 。 2)在 填寫域名資訊 頁面,輸入證書綁定的域名,例如:lab.aliyunedu.net。點選 下一步 。
3)在 填寫個人資訊 頁面,輸入個人資訊。完成後,點選 下一步 。
4)在 上傳相關資訊 頁面,選擇 自己生成CSR 。
5)在本地伺服器中,輸入如下指令,檢視 ca.csr 檔案内容。
cat ca.csr
6)粘貼 ca.csr 檔案内容到 請輸入上傳的CSR檔案 下方的文本框中。完成後,點選 儲存 。
7)點選頁面右下角的 送出稽核 。 8)頁面提示資訊,點選 确認 。
9)此時,證書的 狀态變為 稽核中 。
5. 通過如下步驟,簽發新購證書。
1)等待一段時間,郵箱收到一封證書相關的郵件。檢視 主機記錄 和 記錄值 。 2)進入域名解析頁面,添加一條解析。
3)設定 記錄類型 為 CNAME ,并輸入拷貝的 主機記錄 和 記錄值 。
4)完成後,點選 儲存 。
5)傳回 證書服務 管理控制台。等待一段時間,新購的證書 狀态 将變為 已簽發 ,此時證書可用。
6. 點選證書右側的 下載下傳 ,根據本地部署的伺服器,擷取相應的 .pem 格式證書内容,并檢視證書的使用方法。
3.2 上傳證書
本小節主要内容:個人或企業已有一個可用的證書的前提下,将證書上傳到負載均衡服務中。
- 通過如下步驟,進入 負載均衡 的 證書管理 頁面。
1)在阿裡雲管理控制台,依次頂部導航欄處的 産品與服務 ,并依次選擇 雲計算基礎服務 ---> 網絡 ---> 負載均衡 ,進入負載均衡管理控制台。
2)點選左側欄的 證書管理 ,進入證書管理頁面。
2. 通過如下步驟,将證書上傳到負載均衡服務中。1)點選右上角的 建立證書 。
2)輸入 證書名稱 ,例如:test-ca。
3)勾選證書使用的地域,例如:華北2 等。
說明:可勾選多個地域,例如:華北2 ,華東1 。
4)證書類型 選擇 伺服器證書 。
5)證書内容 輸入證書的 .pem 格式檔案内容。
6)私鑰 ,輸入證書的 .key 檔案内容。
7)完成後,點選 确認 。 8)在證書管理頁面,可以檢視到證書的詳細資訊。 3. 最後,在綁定證書的域名中,添加 負載均衡執行個體IP位址的解析,就可以實作 HTTPS 協定的加密通路。
1)例如下圖所示的網站: 2)例如:阿裡雲官網,輸入 aliyun.com,自動跳轉到 https 通路頁面。
3.3 知識擴充
負載均衡的證書管理功能 針對 HTTPS 協定,提供統一的證書管理服務,證書無需上傳到後端 ECS,解密處理在負載均衡上進行,降低後端 ECS CPU 開銷。
證書格式要求 申請的證書為 linux 環境下 pem 格式的證書。負載均衡不支援其他格式的證書。
如果是通過 root CA 機構頒發的證書, 您拿到的證書為唯一的一份,不需要額外的證書,配置的站點即可被浏覽器等通路裝置認為可信。
如果是通過中級 CA 機構頒發的證書,您拿到的證書檔案包含多份證書,需要人為的将伺服器證書與中間證書合并在一起上傳。
拼接規則為:伺服器證書放第一份,中間證書放第二份,中間不要有空行。
注意:一般情況下,機構在頒發證書的時候會有對應說明, 請注意規則說明。
1)root CA 機構頒發的證書規則:
a. [——-BEGIN CERTIFICATE——-, ——-END CERTIFICATE——-] 開頭和結尾;請将這些内容一并上傳;
b. 每行 64 字元,最後一行長度可以不足 64 字元。
2)中級機構頒發的證書規則:
a.
——-BEGIN CERTIFICATE——-
——-END CERTIFICATE——-
——-BEGIN CERTIFICATE——-
——-END CERTIFICATE——-
——-BEGIN CERTIFICATE——-
——-END CERTIFICATE——-
b. 證書之間不能有空行;
c. 每一份證書遵守第一點關于證書的格式說明;
3)RSA 私鑰規則:
a. [——-BEGIN RSA PRIVATE KEY——-, ——-END RSA PRIVATE KEY——-] 開頭結尾;請将這些内容一并上傳。
b. 每行64字元,最後一行長度可以不足64字元。
說明:如果您不是按照上述方案生成私鑰,得到[——-BEGIN PRIVATE KEY——-, ——-END PRIVATE KEY——-] 這種樣式的私鑰,您可以按照如下方式轉換:
首先,運作以下指令:
openssl rsa -in old_server_key.pem -out new_server_key.pem 然後,将 new_server_key.pem 的内容與證書一起上傳。
轉換證書格式 負載均衡隻支援 PEM 格式的證書,其他格式的證書需要轉換成 PEM 格式後,才能上傳到負載均衡中。建議通過 openssl 工具進行轉換。本文提供了使用 openssl 将以下幾種比較流行的證書格式轉換為 PEM 格式的方法。
1)DER 轉換為 PEM
運作以下指令進行證書轉化:
openssl x509 -inform der -in certificate.cer -out certificate.pem 運作以下指令進行私鑰轉化:
openssl rsa -inform DER -outform PEM -in privatekey.der -out privatekey.pem 2)P7B 轉換為 PEM
運作以下指令進行證書轉化:
openssl pkcs7 -print_certs -in incertificat.p7b -out outcertificate.cer
擷取 outcertificat.cer 裡面 [——-BEGIN CERTIFICATE——-, ——-END CERTIFICATE——-] 的内容作為證書上傳。