全部產品
Search
文件中心

Server Load Balancer:通過NLB實現TCPSSL卸載(雙向認證)

更新時間:Jun 19, 2024

網路型負載平衡NLB(Network Load Balancer )支援大規模SSL卸載功能,您可以在流量入口部署NLB並配置SSL認證和CA認證,TCPSSL雙向認證通過對通訊雙方做認證,為您的業務提供更高的安全性。

背景資訊

  • 單向認證:用戶端需要證明伺服器端,而伺服器端不需要認證用戶端。用戶端從伺服器端請求伺服器端密鑰憑證進行驗證,然後建立安全通訊通道。

  • 雙向認證:用戶端需要從伺服器端請求伺服器的密鑰憑證進行驗證,同時還需要把用戶端的密鑰憑證上傳至伺服器端進行驗證,雙方都通過認證,才能建立安全通訊通道進行資料轉送。因此雙向認證可以為業務提供更高的安全性。

前提條件

  • 您已經建立NLB執行個體。具體操作,請參見建立和管理NLB執行個體

  • 您已建立3台ECS執行個體。具體操作,請參見自訂購買執行個體

    • ECS01和ECS02執行個體作為NLB執行個體的後端伺服器,且ECS01和ECS02中部署了2個不同的應用服務。

      ECS01服務部署命令

      yum install -y nginx
      systemctl start nginx.service
      cd /usr/share/nginx/html/
      echo "Hello World ! This is ECS01." > index.html
      

      ECS02服務部署命令

      yum install -y nginx
      systemctl start nginx.service
      cd /usr/share/nginx/html/
      echo "Hello World ! This is ECS02." > index.html
      
    • ECS03執行個體用於產生自簽的伺服器憑證和用戶端認證,且ECS03已通過OpenSSL官網下載並安裝了OpenSSL工具(1.1.1及以上版本)。您也可以使用已有的Linux伺服器自簽認證,這種情況下無需建立ECS03執行個體。

  • 您已建立後端協議為TCP的NLB伺服器組,且該伺服器組添加了後端伺服器ECS01和ECS02。本文以ECS01和ECS02的後端連接埠均設定為80為例。

配置步驟

配置步驟

步驟一:準備CA認證

  1. 登入數位憑證管理服務控制台

  2. 在左側導覽列,單擊私有證書

  3. 私有證書頁面,單擊私有CA頁簽,找到目標根CA認證。

  4. 單擊目標根CA認證前的icon表徵圖,找到目標私人子CA,在操作列單擊申請認證

  5. 申請認證面板,完成以下認證資訊配置,然後單擊確認申請

    此處僅列出和本文強相關的配置項。關於申請認證的更多操作,請參見管理私人認證

    參數

    說明

    認證類型

    選擇私人認證的認證類型。本文選擇用戶端認證

    一般名稱(CN)

    私人認證主體的通用名稱。用戶端認證支援填寫使用者郵箱地址或URL。

    本文填寫已建立的NLB執行個體的網域名稱。

    有效期間

    私人認證的有效期間。該有效期間不能超過您購買的PCA服務的時間長度。

    本文預設顯示30天。

    提交認證申請後,認證會立即簽發。您可以在目標私人CA操作列單擊證書列表,在認證列表頁面查看已簽發的認證資訊。

步驟二:準備伺服器憑證

您可以通過瀏覽器檢查伺服器發送的認證是否是由自己信賴的中心簽發的。本文為您介紹兩種擷取伺服器憑證的方式。您可以通過認證中心購買伺服器憑證,也可以上傳自簽伺服器憑證至認證中心。

方式一:購買伺服器憑證

您可以從阿里雲數位憑證管理服務控制台購買伺服器憑證或者向其他服務位址購買。關於如何購買伺服器憑證,請參見購買SSL認證

方式二:自簽伺服器憑證

  1. 遠程登入ECS03,執行以下命令,產生自簽名伺服器憑證。產生自簽名伺服器憑證時,請確保ECS03已儲存CA認證,本文中CA認證檔案為root.crtroot.key

    1. 執行以下命令,產生伺服器端認證私密金鑰。

      sudo openssl genrsa -out server.key 4096
    2. 執行以下命令,產生伺服器憑證請求檔案。

      sudo openssl req -new -out server.csr -key server.key

      後續參數請自行填寫,樣本如下:

      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) []:www.example.com
      Email Address []:a.alibaba.com
      A challenge password []:
      An optional company name []:
      重要

      產生伺服器憑證時,Common Name需輸入伺服器憑證綁定的網域名稱,請確保該網域名稱真實可用。其餘參數與產生根憑證和用戶端認證時參數的值保持一致。

      本文NLB執行個體通過DNS解析的自訂網域名www.example.com對外提供服務,Common Name輸入DNS解析的自訂網域名www.example.com

    3. 執行以下命令,產生伺服器端密鑰憑證。

      sudo openssl x509 -req -in server.csr -out server.crt -signkey server.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650

      運行結果如下圖所示:產生伺服器憑證

    4. 執行以下命令,建立一個存放伺服器憑證的檔案目錄。

      sudo mkdir -p /root/ssl
    5. 執行以下命令,將伺服器憑證複製到目標檔案目錄下。

      sudo cp server.crt /root/ssl
      sudo cp server.key /root/ssl
    6. 執行以下命令查看產生的伺服器憑證server.crt和伺服器憑證私密金鑰server.key

      sudo cd /root/ssl
      ls

      運行結果如下圖所示:查看伺服器憑證

  2. 以Windows用戶端為例說明。開啟Windows用戶端的命令列視窗,執行以下命令匯出步驟1產生的伺服器憑證檔案至本地檔案夾。

    scp root@IPaddress:/root/ssl/server.crt  /C:/Users/test    //IPaddress是產生根CA認證的伺服器的IP地址
    scp root@IPaddress:/root/ssl/server.key  /C:/Users/test    //IPaddress是產生根CA認證的伺服器的IP地址
  3. 登入數位憑證管理服務控制台

  4. 在左側導覽列,單擊SSL 憑證

  5. SSL認證頁面的上傳認證頁簽,單擊上傳認證

  6. 上傳證書面板,完成以下參數的配置,單擊確定

    更多資訊,請參見上傳和共用SSL認證

    參數

    說明

    認證標準

    本文選擇國際標準

    認證名稱

    為要上傳的認證設定一個名稱。

    認證檔案

    填寫認證檔案內容的PEM編碼。

    您可以使用文本編輯工具開啟PEM或者CRT格式的認證檔案,複製其中的內容並粘貼到該文字框,或者單擊該文字框下的上傳,並選擇儲存在本機電腦的認證檔案,將檔案內容上傳到文字框。

    本文選擇上傳匯出的伺服器憑證server.crt檔案。

    認證私密金鑰

    填寫認證私密金鑰內容的PEM編碼。

    您可以使用文本編輯工具開啟KEY格式的認證私密金鑰檔案,複製其中的內容並粘貼到該文字框,或者單擊該文字框下的上傳並選擇儲存在本機電腦的認證私密金鑰檔案,將檔案內容上傳到文字框。

    本文選擇上傳匯出的伺服器憑證私密金鑰server.key檔案。

    憑證鏈結

    憑證鏈結編碼。本文不做配置。

步驟三:準備用戶端認證

您可以根據實際情況選擇以下一種方式準備用戶端認證。

  1. 登入數位憑證管理服務控制台

  2. 在左側導覽列,單擊私有證書

  3. 私有證書頁面,單擊私有CA頁簽,找到目標根CA認證。

    關於如何購買目標根CA認證,請參見購買及啟用私人CA

  4. 單擊目標根CA認證前的icon表徵圖,找到目標子CA認證,在操作列單擊證書列表

  5. 證書列表頁面,定位到目標私人認證,在操作列,單擊下載

  6. 認證下載對話方塊,選擇需要下載的認證格式,單擊確認並下載。本文選擇CRT格式,下載完成後,用戶端認證為client.crt,用戶端私密金鑰為client.key

  7. 將用戶端認證轉換為瀏覽器可以識別的PKCS12檔案。

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

    2. 執行以下命令建立一個存放用戶端認證的檔案目錄。

      sudo mkdir -p /root/ca/users
    3. 將產生的用戶端認證client.crt和私密金鑰client.key上傳到users目錄下。

    4. 執行以下命令將用戶端認證轉化為PKCS12檔案。

      sudo openssl pkcs12 -export -clcerts -in /root/ca/users/client.crt -inkey /root/ca/users/client.key -out /root/ca/users/client.p12
    5. 按照提示設定用戶端私密金鑰加密密碼。

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

      運行結果如下圖所示:P12

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

    sudo cd /root/ca/users
    ls

    運行結果如下圖所示:用戶端認證

  9. 在本地開啟命令列視窗,執行以下命令匯出產生的用戶端認證。

    scp root@IPaddress:/root/ca/users/client.p12 ./          //IPaddress是產生用戶端認證的伺服器的IP地址

步驟四:安裝用戶端認證

將產生的用戶端認證安裝至用戶端,本文以Windows用戶端和Linux用戶端為例進行說明。

Windows用戶端

在Microsoft Edge瀏覽器中匯入下載的用戶端認證。

  1. 開啟Microsoft Edge瀏覽器,選擇... > 設定

  2. 在左側導覽列,單擊隱私、搜尋和服務頁簽,然後在安全性模組找到並單擊管理憑證,匯入下載的PKCS12檔案。在匯入認證時需要輸入步驟三:匯出用戶端認證匯出認證的密碼。

Linux用戶端

使用ECS03伺服器產生用戶端認證後,ECS03伺服器的目錄中已存在該用戶端認證。如需在其他Linux用戶端驗證NLB雙向認證,請先執行以下步驟,將雙向認證相關認證複製至該Linux用戶端目錄下。

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

    1. 建立檔案夾。

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

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

      以下路徑僅供參考,請以實際操作路徑為準。

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

步驟五:配置TCPSSL監聽的雙向認證

  1. 登入網路型負載平衡NLB控制台
  2. 在頂部功能表列,選擇NLB執行個體的所屬地區。

  3. 執行個體頁面,找到目標執行個體,在操作列單擊建立監聽

  4. 配置監聽設定精靈,完成以下參數的配置,然後單擊下一步

    此處僅列出和本文強相關的配置項,其他未列出的配置項使用預設值。更多資訊,請參見添加TCPSSL監聽

    配置

    說明

    選擇監聽協議

    選擇一種監聽協議。本文選擇TCPSSL

    監聽連接埠

    輸入用來接收請求並向後端伺服器進行請求轉寄的監聽連接埠。本文輸入443

  5. 配置SSL認證設定精靈,在選擇伺服器憑證下拉框中選擇步驟二:準備伺服器憑證購買或上傳的伺服器憑證。

  6. 開啟高級配置中的啟用雙向認證開關。選擇CA認證來源為阿里雲簽發,在選擇預設CA認證下拉框中選擇已購買的CA認證。

  7. 選擇TLS安全性原則,然後單擊下一步

  8. 選擇伺服器組設定精靈,選擇已建立的伺服器組,查看後端伺服器ECS01和ECS02的資訊,本文連接埠號碼均設定為80,然後單擊下一步

  9. 組態稽核設定精靈,確認配置資訊,單擊提交

步驟六:驗證TCPSSL雙向認證

Windows用戶端

  1. 返回NLB執行個體頁面,單擊目標NLB執行個體ID,然後單擊監聽頁簽,查看TCPSSL監聽的健全狀態檢查狀態。

    健全狀態檢查狀態列為正常時,表示後端伺服器可以正常接收處理NLB的TCPSSL監聽轉寄的請求。

  2. 在瀏覽器中輸入https://伺服器憑證綁定的網域名稱命令,例如https://www.example.com,在彈出的對話方塊中選中用於驗證用戶端身份的認證,單擊確定訪問NLB執行個體

  1. 由於瀏覽器緩衝問題,驗證四層負載平衡時,建議您每次使用無痕瀏覽器訪問DNS網域名稱,可以觀察到請求已分發至兩台ECS。驗證雙向認證圖1驗證雙向認證圖2

Linux用戶端

登入已儲存了根憑證、伺服器憑證和用戶端認證的Linux用戶端,執行以下命令驗證NLB雙向認證。

sudo curl --cert /root/ca/client.crt --key /root/ca/client.key --cacert /root/ca/root.crt www.example.com

www.example.com為NLB執行個體伺服器憑證綁定的網域名稱。

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