全部產品
Search
文件中心

Server Load Balancer:使用CLB部署HTTPS業務(雙向認證)

更新時間:Jun 08, 2024

HTTPS單向認證只對伺服器做認證,HTTPS雙向認證對伺服器和用戶端做雙向認證。當您在處理一些關鍵業務時,HTTPS雙向認證通過對通訊雙方做雙向認證,為您的業務提供更高的安全性。本文為您介紹如何使用CLB部署HTTPS雙向認證。

配置步驟

本指南中使用自簽名的CA認證為用戶端認證簽名,完成以下操作配置HTTPS監聽(雙向認證):

CLB部署Https雙向認證

前提條件

  • 您已建立了CLB執行個體。

  • 您已經建立了後端伺服器ECS01和ECS02,並部署了2個不同的應用服務。

步驟一:購買伺服器憑證

您可以從阿里雲數位憑證管理服務控制台購買伺服器憑證或者在其他服務位址購買伺服器憑證。您可以通過瀏覽器檢查伺服器發送的認證是否是由自己信賴的中心簽發的。

本文以從阿里雲數位憑證管理服務控制台購買伺服器憑證為例。更多資訊,請參見購買SSL認證

重要

購買SSL認證時需要綁定網域名稱,請確保您擁有真實可用的網域名稱。

步驟二:使用OpenSSL產生CA認證

登入到任意一台安裝有OpenSSL工具的Linux機器。

  1. 執行以下命令,建立根CA認證私密金鑰。

    openssl genrsa -out root.key 4096
  2. 執行以下命令,建立根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 []:
  3. 執行以下命令,建立根CA認證。

    openssl x509 -req -in root.csr -out root.crt -signkey root.key -CAcreateserial -days 3650

    運行結果如下圖所示:建立根憑證

  4. 執行ls命令,可查看到產生的根CA認證root.crt和根CA認證私密金鑰root.key

步驟三:產生用戶端認證

  1. 執行以下命令,產生用戶端認證密鑰。

  2. openssl genrsa -out client.key 4096
  3. 執行以下命令,產生用戶端認證請求檔案。Common Name需要配置為您的網域名稱。

  4. openssl req -new -out client.csr -key client.key
  5. 執行以下命令,產生用戶端認證。

  6. openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650
  7. 執行以下命令,將產生的用戶端認證client.crt轉換為瀏覽器可以識別的PKCS12檔案。按照提示輸入設定的用戶端私密金鑰加密密碼。

  8. openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
  9. 執行ls命令,可查看到產生的client.keyclient.crtclient.p12用戶端認證檔案。

步驟四:安裝用戶端認證

將產生的用戶端認證安裝到用戶端。

Windows用戶端

雙擊用戶端認證client.p12,根據系統認證匯入嚮導提示完成用戶端認證安裝。

Linux用戶端

將此前產生的用戶端認證檔案client.keyclient.crtroot.crt,上傳至Linux用戶端任意目錄。

本文樣本為/home/ca目錄,並執行sudo chmod 700 /home/ca修改目錄許可權。

步驟五:上傳伺服器憑證和CA認證

  1. 登入傳統型負載平衡CLB控制台

  2. 在左側導覽列,選擇傳統型負載平衡 CLB > 認證管理,然後單擊建立認證,上傳伺服器憑證。

  3. 建立認證面板,單擊上傳非阿里雲簽發認證,完成以下配置,然後單擊建立

    配置

    說明

    認證名稱

    輸入認證名稱。

    認證類型

    本文選擇伺服器憑證

    密鑰憑證

    複製伺服器憑證內容。

    私密金鑰

    複製伺服器憑證的私密金鑰內容。

    認證部署地區

    選擇CLB執行個體所屬地區。

  4. 認證管理頁面,單擊建立認證,上傳CA認證。

  5. 建立認證面板,單擊上傳非阿里雲簽發認證,完成以下配置,然後單擊建立

    配置

    說明

    認證名稱

    輸入認證名稱。

    認證類型

    本文選擇CA認證

    用戶端CA密鑰憑證

    上傳用戶端CA密鑰憑證。

    認證部署地區

    選擇CLB執行個體所屬地區。

步驟六:配置HTTPS雙向認證監聽

  1. 登入傳統型負載平衡CLB控制台

  2. 單擊已建立的Server Load Balancer執行個體ID。

  3. 監聽頁簽下,單擊添加監聽

  4. 協議&監聽頁簽下,完成以下配置,然後單擊下一步

    • 選擇監聽協議:HTTPS

    • 監聽連接埠:443

  5. SSL認證頁簽下,選擇已上傳的伺服器憑證。

  6. 單擊進階設定後面的修改,啟用雙向認證,選擇已上傳的CA認證,然後單擊下一步

  7. 選擇預設伺服器組,單擊添加,添加後端伺服器。

  8. 其他參數保持預設值,單擊下一步提交,完成監聽配置。

步驟七:測試HTTPS雙向認證

Windows用戶端

  1. 在瀏覽器中,輸入https://ip:port,ip為CLB的公網服務地址。在彈出的對話方塊中根據提示確認認證。

  2. 重新整理瀏覽器,您可以觀察到請求在兩台ECS伺服器之間轉換。

    ECS01ECS02

Linux用戶端

登入已安裝認證的Linux用戶端,執行以下命令驗證CLB雙向認證。

sudo curl --cert /home/ca/client.crt --key /home/ca/client.key --cacert /home/ca/ca.crt https://<伺服器憑證綁定的網域名稱>:<連接埠>

收到如下所示的回複報文,則表示用戶端和服務端已完成雙向認證,並將請求分發至兩台ECS。驗證1