全部產品
Search
文件中心

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

更新時間:Feb 28, 2024

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

配置步驟

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

CLB部署Https雙向認證

前提條件

  • 您已通過OpenSSL官網下載並安裝 OpenSSL 工具(1.1.1 或以上版本)。

  • 您已經建立了執行個體ECS01和ECS02,並部署了2個不同的應用服務。具體操作,請參見使用嚮導建立執行個體

步驟一:購買伺服器憑證

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

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

重要

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

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

  1. 登入到任意一台安裝有OpenSSL工具的Linux機器。開啟命令視窗,執行以下命令在/home目錄下建立一個ca檔案夾,並在ca檔案夾下建立四個子檔案夾。

    sudo mkdir ca
     cd ca
     sudo mkdir newcerts private conf server

    其中:

    • newcerts檔案夾:用於存放CA簽署過的數位憑證(認證備份目錄)。

    • private檔案夾:用於存放CA的私密金鑰。

    • conf檔案夾:用於存放一些簡化參數用的設定檔。

    • server檔案夾:用於存放伺服器憑證檔案。

  2. 執行以下命令,在conf目錄下建立一個包含以下資訊的openssl.conf檔案。

    [ ca ]
     default_ca = foo
     [ foo ] 
     dir = /home/ca
     database = /home/ca/index.txt
     new_certs_dir = /home/ca/newcerts
     certificate = /home/ca/private/ca.crt
     serial = /home/ca/serial
     private_key = /home/ca/private/ca.key
     RANDFILE = /home/ca/private/.rand
     default_days = 365
     default_crl_days= 30
     default_md = md5
     unique_subject = no
     policy = policy_any
     [ policy_any ]
     countryName = match
     stateOrProvinceName = match
     organizationName = match
     organizationalUnitName = match
     localityName = optional
     commonName = supplied
     emailAddress = optional
  3. 依次執行以下命令,產生私密金鑰key檔案。

    cd /home/ca   
        sudo openssl genrsa -out private/ca.key

    運行結果如下圖所示:p2750

  4. 執行以下命令並按照介面提示輸入對應資訊,產生認證請求csr檔案。

      sudo openssl req -new -key private/ca.key -out private/ca.csr

    運行結果如下圖所示,供您參考。Common Name需要輸入您的傳統型負載平衡CLB的網域名稱。

    p2753

  5. 運行以下命令產生憑證crt檔案。

      sudo openssl x509 -req -days 365 -in private/ca.csr -signkey private/ca.key -out private/ca.crt
  6. 運行以下命令為CA的key設定起始序號。

    起始序號可以是任意四個字元。本樣本中您可以自訂FACE

      sudo echo FACE > serial
  7. 運行以下命令建立CA鍵庫。

      sudo touch index.txt

步驟三:產生用戶端認證

  1. 遠程登入ECS01,具體操作,請參見ECS遠端連線操作指南

  2. 執行以下命令,在ca目錄內建立一個存放用戶端key的目錄users

      sudo mkdir users
  3. 完成以下操作為用戶端建立一個key。

    1. 執行以下命令。

        sudo openssl genrsa -des3 -out /home/ca/users/client.key 1024
    2. 根據提示,輸入pass phrase。

      pass phrase是當前key的口令,以防止本密鑰泄漏後被人盜用。兩次輸入同一個密碼。

  4. 執行以下命令為用戶端key建立一個認證簽章要求csr檔案。

    sudo openssl req -new -key /home/ca/users/client.key -out /home/ca/users/client.csr

    輸入該命令後,根據提示輸入步驟二輸入的pass phrase,然後根據提示,提供對應的資訊。

    說明

    A challenge password是用戶端認證口令(請注意將它和client.key的口令區分開,client.key為用戶端密鑰,本教程設定密碼為test),可以與伺服器端認證或者根憑證口令一致。

    運行結果如下圖所示:p2757

  5. 執行以下命令,使用步驟二:使用OpenSSL產生CA認證中的CA Key為剛才的用戶端key簽名。

    sudo openssl ca -in /home/ca/users/client.csr -cert /home/ca/private/ca.crt -keyfile /home/ca/private/ca.key -out /home/ca/users/client.crt -config "/home/ca/conf/openssl.conf"

    當出現確認是否簽名的提示時,兩次都輸入y

    運行結果如下圖所示:2758

  6. 完成以下操作將認證轉換為瀏覽器可以識別的PKCS12檔案。

    1. 執行以下命令。

      sudo openssl pkcs12 -export -clcerts -in /home/ca/users/client.crt -inkey /home/ca/users/client.key -out /home/ca/users/client.p12
    2. 按照提示輸入用戶端client.key的pass phrase。

    3. 輸入用於匯出認證的密碼。此密碼為用戶端認證的保護密碼,在安裝用戶端認證時需要輸入該密碼。

      運行結果如下圖所示:2759

  7. 執行以下命令查看產生的用戶端認證。

    cd users
     ls

    運行結果如下圖所示:2760

步驟四:安裝用戶端認證

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

Windows用戶端

  1. 開啟命令列視窗,執行以下命令匯出步驟三:產生用戶端認證中產生的用戶端認證。

    scp home@IPaddress:/home/ca/users/client.p12 ./          //IPaddress是產生用戶端認證的伺服器的IP地址
  2. 在IE瀏覽器中匯入下載的用戶端認證。

    1. 開啟IE瀏覽器,選擇設定>Internet選項

    2. 單擊內容頁簽,然後單擊認證,匯入下載的用戶端認證。在匯入認證時需要輸入步驟三:產生用戶端認證產生PKCS12檔案的密碼。

Linux用戶端

使用ECS01伺服器產生用戶端認證後,ECS01伺服器已自動安裝該用戶端認證。如需為其他Linux用戶端安裝用戶端認證,請執行以下步驟。

  1. 登入一台Linux用戶端。執行以下命令,將用戶端認證和根憑證複製至某個目錄下。

    1. 建立檔案夾。

      sudo mkdir /home/ca
    2. 修改目錄許可權。

      sudo chmod 700 /home/ca
    3. 分別執行以下命令,複製認證檔案至當前Linux用戶端目錄下。

      sudo scp home@IPaddress:/home/ca/client.crt /home/ca    //IPaddress是產生用戶端認證的伺服器的IP地址
      sudo scp home@IPaddress:/home/ca/ca.crt /home/ca        //IPaddress是產生根憑證的伺服器的IP地址
      sudo scp home@IPaddress:/home/ca/ca.key /home/ca        //IPaddress是產生根憑證的伺服器的IP地址

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

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

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

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

    配置

    說明

    認證名稱

    輸入認證名稱。

    名稱長度限制為1~80個字元,只能包含字母、數字、串連號(-)、正斜線(/)、英文句點(.)、底線(_)和星號(*)。

    認證類型

    本文選擇伺服器憑證

    密鑰憑證

    複製伺服器憑證內容。

    單擊查看範例查看正確的認證樣式。詳情參見認證要求

    私密金鑰

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

    單擊查看範例查看正確的認證樣式。詳情參見認證要求

    重要

    只有上傳伺服器憑證時,才需要上傳私密金鑰。

    認證部署地區

    本文選擇華東1(杭州)

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

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

    配置

    說明

    認證名稱

    輸入認證名稱。

    名稱長度限制為1~80個字元,只能包含字母、數字、串連號(-)、正斜線(/)、英文句點(.)、底線(_)和星號(*)。

    認證類型

    本文選擇CA認證

    用戶端CA密鑰憑證

    上傳用戶端CA密鑰憑證。

    單擊查看範例查看正確的認證樣式。詳情參見認證要求

    認證部署地區

    本文選擇華東1(杭州)

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

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

  2. 執行個體管理頁面,單擊建立傳統型負載平衡

  3. 配置Server Load Balancer執行個體,單擊立即購買完成支付。

    執行個體類型選擇公網,地區選擇華東1(杭州)。詳細配置資訊請參見建立和管理CLB執行個體

  4. 建立成功後,返回執行個體管理頁面,選擇華東1(杭州)地區。

  5. 單擊已建立的Server Load Balancer執行個體ID連結,或者在操作列單擊監聽設定精靈

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

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

    • 選擇監聽協議:HTTPS

    • 監聽連接埠443

    • 調度演算法:輪詢(RR)

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

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

  10. 選擇預設伺服器組,單擊繼續添加,添加ECS伺服器,後端協議監聽連接埠設定為443

  11. 其他參數保持預設值,單擊下一步提交,完成Server Load Balancer執行個體配置。

步驟七:測試HTTPS雙向認證

本文為您提供以下兩種方式驗證HTTPS雙向認證。

Windows用戶端

  1. 執行個體管理頁面,查看健全狀態檢查狀態。

    當狀態為正常時,表示後端伺服器可以正常接收處理負載平衡監聽轉寄的請求。

  2. 在瀏覽器中,輸入負載平衡的公網服務地址,在彈出的對話方塊中根據提示確認認證。

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

    ECS01ECS02

Linux用戶端

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

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

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