要配置HTTPS雙向認證的監聽,您需要在配置監聽時上傳伺服器憑證和CA認證。

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

  1. 準備伺服器憑證
  2. 使用OpenSSL產生CA認證
  3. 產生用戶端認證
  4. 上傳伺服器憑證和CA認證
  5. 安裝用戶端認證
  6. 配置負載平衡雙向認證監聽
  7. 測試負載平衡服務

步驟一 準備伺服器憑證

伺服器憑證用於使用者瀏覽器檢查伺服器發送的認證是否是由自己信賴的中心簽發的,伺服器憑證可以到阿里雲Apsara Stack Security認證服務購買,也可以到其他服務位址購買。

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

  1. 運行以下命令在/root目錄下建立一個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 = /root/ca
     database = /root/ca/index.txt
     new_certs_dir = /root/ca/newcerts
     certificate = /root/ca/private/ca.crt
     serial = /root/ca/serial
     private_key = /root/ca/private/ca.key
     RANDFILE = /root/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 /root/ca
     $ sudo openssl genrsa -out private/ca.key

    運行結果如下圖所示。

  4. 運行以下命令並按命令後的樣本提供需要輸入的資訊,然後斷行符號,產生認證請求csr檔案。
    $ sudo openssl req -new -key private/ca.key -out private/ca.csr
    说明 Common Name請輸入您的負載平衡服務的網域名稱。
  5. 運行以下命令產生憑證crt檔案。
    $ sudo openssl x509 -req -days 365 -in private/ca.csr -signkey private/ca.key -out private/ca.crt
  6. 運行以下命令為CA的key設定起始序號,可以是任意四個字元。
    $ sudo echo FACE > serial
  7. 運行以下命令建立CA鍵庫。
    $ sudo touch index.txt
  8. 運行以下命令為移除用戶端認證建立一個認證撤銷列表。
    $ sudo openssl ca -gencrl -out /root/ca/private/ca.crl -crldays 7 -config "/root/ca/conf/openssl.conf"

    輸出為:

    Using configuration from /root/ca/conf/openssl.conf

步驟三 產生用戶端認證

  1. 運行以下命令在ca目錄內建立一個存放用戶端key的目錄users
    $ sudo mkdir users
  2. 運行以下命令為用戶端建立一個key:
    $ sudo openssl genrsa -des3 -out /root/ca/users/client.key 1024
    说明 建立key時要求輸入pass phrase,這個是當前key的口令,以防止本密鑰泄漏後被人盜用。兩次輸入同一個密碼。
  3. 運行以下命令為用戶端key建立一個認證簽章要求csr檔案。
    $ sudo openssl req -new -key /root/ca/users/client.key -out /root/ca/users/client.csr
    輸入該命令後,根據提示輸入上一步輸入的pass phrase,然後根據提示,提供對應的資訊。
    说明 A challenge password是用戶端認證口令(請注意將它和client.key的口令區分開,本教程設定密碼為test),可以與伺服器端認證或者根憑證口令一致。
  4. 運行以下命令使用步驟二中的CA Key為剛才的用戶端key簽名。
    $ sudo openssl ca -in /root/ca/users/client.csr -cert /root/ca/private/ca.crt -keyfile /root/ca/private/ca.key -out /root/ca/users/client.crt -config "/root/ca/conf/openssl.conf"

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

  5. 運行以下命令將認證轉換為大多數瀏覽器都能識別的PKCS12檔案。
    $ sudo openssl pkcs12 -export -clcerts -in /root/ca/users/client.crt -inkey /root/ca/users/client.key -out /root/ca/users/client.p12

    按照提示輸入用戶端client.key的pass phrase。

    再輸入用於匯出認證的密碼。這個是用戶端認證的保護密碼,在安裝用戶端認證時需要輸入這個密碼。

  6. 運行以下命令查看產生的用戶端認證。
    cd users
     ls

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

  1. 登入負載平衡管理主控台
  2. 執行個體管理頁面,單擊建立負載平衡
  3. 配置負載平衡執行個體,單擊立即購買完成支付。

    本操作中網路類型選擇公網,地區選擇華東1(杭州),詳細配置資訊參考建立Server Load Balancer執行個體

  4. 建立成功後,在執行個體管理頁面,將滑鼠移至執行個體名稱地區,單擊出現的鉛筆表徵圖,修改負載平衡執行個體名稱。
  5. 在選左側導覽列,單擊認證管理頁簽。
  6. 單擊建立認證
  7. 建立認證頁面,完成如下配置後,單擊確定
    • 認證部署地區:本教程中選擇華東1
      说明 認證的地區和負載平衡執行個體的地區要相同。
    • 認證類型:選擇伺服器憑證
    • 認證內容和私密金鑰:複製您的伺服器憑證內容和私密金鑰。
      说明 在複製內容前,您可以單擊匯入樣式,查看正確的認證和私密金鑰格式。更多詳細資料查看證書要求
  8. 在負載平衡左側導覽列,單擊認證管理,然後單擊建立認證,上傳CA認證。
  9. 建立認證頁面,完成如下配置後,單擊確定
    • 認證部署地區:本教程中選擇華東1(杭州)
      说明 認證的地區和負載平衡執行個體的地區要相同。
    • 認證類型:選擇CA認證
    • 認證內容:複製您的CA認證內容。
      说明 在複製內容前,您可以單擊匯入樣式,查看正確的認證和私密金鑰格式。更多詳細資料查看證書要求

步驟五 安裝用戶端認證

將產生的用戶端認證安裝到用戶端。本教程以Windows用戶端,IE瀏覽器為例。
  1. 開啟Git Bash命令列視窗,運行以下命令匯出步驟三中產生的用戶端認證。
    scp root@IPaddress:/root/ca/users/client.p12 ./
    说明 IPaddress是產生用戶端認證的伺服器的IP地址。
  2. 在IE瀏覽器中匯入下載的用戶端認證。
    1. 開啟IE瀏覽器,單擊設定 > Internet選項
    2. 單擊內容頁簽,然後單擊認證,匯入下載的用戶端認證。在匯入認證時需要輸入在步驟三時產生PKCS12檔案的密碼。

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

  1. 登入負載平衡管理主控台
  2. 選擇華東1(杭州)地區,單擊已建立的負載平衡執行個體ID連結,或者單擊監聽設定精靈
  3. 選擇監聽頁簽,單擊添加監聽
  4. 協議&監聽頁簽下,配置監聽。
    • 選擇負載平衡協議:HTTPS
    • 監聽連接埠:443
    • 調度演算法:輪詢(RR)
  5. 單擊下一步,在SSL認證頁簽下,配置SSL認證資訊,啟用雙向認證。
    • 伺服器憑證:選擇已上傳的伺服器憑證。
    • CA認證: 選擇已上傳的CA認證。
  6. 單擊下一步,選擇預設伺服器組頁簽,單擊添加,添加ECS伺服器,並將後端協議連接埠設定為80。
  7. 單擊下一步,開啟健全狀態檢查。
  8. 單擊下一步,查看監聽配置資訊。
  9. 單擊提交,提交審核。
  10. 單擊確定

步驟七 測試HTTPS雙向認證

  1. 執行個體管理頁面,查看健全狀態檢查狀態。當狀態為正常時,表示後端伺服器可以正常接收處理負載平衡監聽轉寄的請求。
  2. 在瀏覽器中,輸入負載平衡的公網服務地址,當提示是否信任用戶端認證時,選擇信任。
  3. 重新整理瀏覽器,您可以觀察到請求在兩台ECS伺服器之間轉換。