HTTPS單向認證只對伺服器做認證,HTTPS雙向認證對伺服器和用戶端做雙向認證。當您在處理一些關鍵業務時,HTTPS雙向認證通過對通訊雙方做雙向認證,為您的業務提供更高的安全性。本文為您介紹如何使用CLB部署HTTPS雙向認證。
配置步驟
本指南中使用自簽名的CA認證為用戶端認證簽名,完成以下操作配置HTTPS監聽(雙向認證):

前提條件
-
您已建立了CLB執行個體。
-
您已經建立了後端伺服器ECS01和ECS02,並部署了2個不同的應用服務。
步驟一:購買伺服器憑證
您可以從阿里雲數位憑證管理服務控制台購買伺服器憑證或者在其他服務位址購買伺服器憑證。您可以通過瀏覽器檢查伺服器發送的認證是否是由您信賴的中心簽發的。
本文以從阿里雲數位憑證管理服務控制台購買伺服器憑證為例。更多資訊,請參見購買正式認證。
購買SSL認證時需要綁定網域名稱,請確保您擁有真實可用的網域名稱。
步驟二:使用OpenSSL產生CA認證
雙向認證中,伺服器憑證需要由權威CA簽發以獲得瀏覽器信任(步驟一),而用戶端認證由您自行管理和分發,不需要公用信任鏈結,因此可以使用自簽名CA認證來簽發。以下步驟將產生用於簽發用戶端認證的自簽名CA認證。
登入到任意一台安裝有OpenSSL工具的Linux機器。
-
執行以下命令,建立根CA認證私密金鑰。
openssl genrsa -out root.key 4096 -
執行以下命令,建立根CA認證請求檔案。
openssl req -new -out root.csr -key root.key後續參數請自行填寫,樣本如下:
說明注意CA認證Common Name需要保證唯一性,不要與服務端認證或者用戶端認證的Common Name相同。
Country Name (2 letter code) [XX]:cn State or Province Name (full name) []:bj Locality Name (eg, city) [Default City]:bj Organization Name (eg, company) [Default Company Ltd]:alibaba Organizational Unit Name (eg, section) []:test Common Name (eg, your name or your servers hostname) []:root Email Address []:a.alibaba.com A challenge password []: An optional company name []: -
執行以下命令,建立根CA認證。
openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650運行結果如下圖所示:

-
執行
ls命令,可查看到產生的根CA認證root.crt和根CA認證私密金鑰root.key。
步驟三:產生用戶端認證
-
執行以下命令,產生用戶端認證密鑰。
-
執行以下命令,產生用戶端認證請求檔案。Common Name需要配置為您的網域名稱。
-
執行以下命令,產生用戶端認證。
-
執行以下命令,將產生的用戶端認證
client.crt轉換為瀏覽器可以識別的PKCS12檔案。按照提示輸入設定的用戶端私密金鑰加密密碼。 -
執行
ls命令,可查看到產生的client.key、client.crt、client.p12用戶端認證檔案。
openssl genrsa -out client.key 4096openssl req -new -out client.csr -key client.keyopenssl x509 -req -in client.csr -out client.crt -CA root.crt -CAkey root.key -CAcreateserial -days 3650openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12步驟四:安裝用戶端認證
將產生的用戶端認證安裝到用戶端。
Windows用戶端
雙擊用戶端認證client.p12,根據系統認證匯入嚮導提示完成用戶端認證安裝。
Linux用戶端
將此前產生的用戶端認證檔案client.key、client.crt、root.crt,上傳至Linux用戶端任意目錄。
本文樣本為/home/ca目錄,並執行sudo chmod 700 /home/ca修改目錄許可權。
步驟五:上傳伺服器憑證和CA認證
-
在左側導覽列,選擇,然後單擊建立證書,上傳伺服器憑證。
-
在建立證書面板,單擊上傳非阿里雲簽發認證,完成以下配置,然後單擊建立。
配置
說明
憑證名稱
輸入認證名稱。
憑證類型
本文選擇伺服器憑證。
密鑰憑證
複製伺服器憑證內容。
私鑰
複製伺服器憑證的私密金鑰內容。
憑證部署地域
選擇CLB執行個體所屬地區。
-
在憑證管理頁面,單擊建立證書,上傳CA認證。
-
在建立證書面板,單擊上傳非阿里雲簽發認證,完成以下配置,然後單擊建立。
配置
說明
憑證名稱
輸入認證名稱。
憑證類型
本文選擇CA認證。
客戶端CA公開金鑰證書
上傳用戶端CA密鑰憑證。
憑證部署地域
選擇CLB執行個體所屬地區。
步驟六:配置HTTPS雙向認證監聽
啟用雙向認證後,CLB將要求所有用戶端請求攜帶有效用戶端認證,未安裝用戶端認證的請求將被拒絕。如果您的CLB執行個體正在為線上業務提供服務,建議先在測試環境驗證配置,或使用新的監聽連接埠進行測試,避免影響現有業務。
-
單擊已建立的Server Load Balancer執行個體ID。
-
在監聽頁簽下,單擊新增監聽。
-
在合約&監聽頁簽下,完成以下配置,然後單擊下一步。
-
選擇監聽協議:HTTPS
-
監聽通信埠:443
-
-
在SSL憑證頁簽下,選擇已上傳的伺服器憑證。
-
單擊高級配置後面的編輯,啟用雙向認證,選擇已上傳的CA認證,然後單擊下一步。
-
選擇預設伺服器組,單擊新增,添加後端伺服器。
-
其他參數保持預設值,單擊下一步至提交,完成監聽配置。
步驟七:測試HTTPS雙向認證
Windows用戶端
-
在瀏覽器中,輸入
https://ip:port,ip為CLB的公網服務地址。在彈出的對話方塊中根據提示確認認證。 -
重新整理瀏覽器,您可以觀察到請求在兩台ECS伺服器之間轉換。


Linux用戶端
登入已安裝認證的Linux用戶端,執行以下命令驗證CLB雙向認證。
sudo curl --cert /home/ca/client.crt --key /home/ca/client.key --cacert /home/ca/root.crt https://<伺服器憑證綁定的網域名稱>:<連接埠>
收到如下所示的回複報文,則表示用戶端和服務端已完成雙向認證,並將請求分發至兩台ECS。