當您在處理一些關鍵業務時,HTTPS雙向認證通過對通信雙方做認證,為您的業務提供更高的安全性。本文指導您如何使用ALB部署HTTPS雙向認證。
背景信息
HTTPS單向認證:客戶端需要認證服務器端,而服務器端不需要認證客戶端。客戶端從服務器端下載服務器端公鑰證書進行驗證,然后建立安全通信通道。
HTTPS雙向認證:客戶端需要從服務器端下載服務器的公鑰證書進行驗證,同時還需要把客戶端的公鑰證書上傳到服務器端進行驗證,雙方都通過認證,才能建立安全通信通道進行數據傳輸。因此雙向認證可以為業務提供更高的安全性。
使用限制
僅標準版和WAF增強版的ALB實例支持雙向認證,基礎版ALB實例不支持雙向認證。
前提條件
您已創建了標準版或WAF增強版的ALB實例。具體操作,請參見創建應用型負載均衡。
說明基礎版的ALB實例不支持雙向認證。
您已創建專有網絡VPC1,具體操作,請參見創建和管理專有網絡。
您已在VPC1中創建2臺ECS實例。ECS01和ECS02實例作為ALB實例的后端服務器,且ECS01和ECS02實例中部署了應用服務。
關于創建ECS實例,請參見自定義購買實例。
本文ECS01和ECS02部署測試應用示例如下:
yum install -y nginx systemctl start nginx.service cd /usr/share/nginx/html/ echo "Hello World ! This is ECS01." > index.html
yum install -y nginx systemctl start nginx.service cd /usr/share/nginx/html/ echo "Hello World ! This is ECS02." > index.html
您已創建了后端服務器組RS,并添加了ECS01和ECS02作為后端服務器。具體操作,請參見創建和管理服務器組。
您已在證書中心購買并啟用子CA證書,且私有子CA的證書剩余數量不為0;或已上傳自簽名根CA或自簽名子根CA證書至證書中心。具體操作,請參見購買及啟用私有CA和管理證書應用倉庫中的證書。
配置步驟
服務端需要完成購買服務器證書的操作,客戶端(用戶)需要完成準備客戶端證書、導出客戶端證書、安裝客戶端證書的操作。
步驟一:購買服務器證書
您可以從阿里云數字證書管理服務控制臺購買、上傳服務器證書或者在其他服務商處購買服務器證書。您可以通過瀏覽器檢查服務器發送的證書是否是由自己信賴的中心簽發的。
本文以從阿里云數字證書管理服務控制臺購買服務器證書為例。關于如何購買服務器證書,請參見購買SSL證書和上傳SSL證書。
購買SSL證書時需要綁定域名,請確保您擁有真實可用的域名。
步驟二:準備客戶端證書
本文為您介紹兩種獲取CA證書的方式。您可以通過證書中心購買CA證書并申請客戶端證書,也可以上傳自簽CA證書至證書中心。
方式一:購買客戶端證書
登錄數字證書管理服務控制臺。
在左側導航欄,單擊私有證書。
在私有證書頁面,單擊私有CA頁簽,找到目標根CA證書。
單擊目標根CA證書前的圖標,找到目標私有子CA,在操作列單擊申請證書。
在申請證書面板,完成以下證書信息配置,然后單擊確認申請。
此處僅列出和本文強相關的配置項。關于申請證書的更多操作,請參見管理私有證書。
參數
說明
證書類型
選擇私有證書的證書類型。本文選擇客戶端證書。
姓名
私有證書主體的通用名稱。
本文填寫已創建的ALB實例的域名。
有效期
私有證書的有效期。該有效期不能超過您購買的PCA服務的時長。
本文默認30天。
提交證書申請后,證書會立即簽發。您可以在目標私有子CA操作列單擊證書列表,在證書列表頁面查看已簽發的證書信息。
方式二:上傳自簽CA證書
遠程登錄ECS01,執行以下命令,生成自簽名根CA證書。
ALB支持自簽名根CA或自簽名子CA證書進行雙向認證,本文以自簽名根CA證書為例為您介紹。
執行以下命令,創建根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
。
登錄數字證書管理服務控制臺。
在左側導航欄,單擊證書應用倉庫。
在證書應用倉庫頁面,單擊創建倉庫。
在創建倉庫面板,配置以下參數,然后單擊確定。
配置項
說明
倉庫名稱
自定義倉庫名稱。
數據來源
本文選擇上傳CA證書,表示對通過第三方證書服務商購買并簽發的私有證書進行管理。
在證書應用倉庫頁面,單擊目標證書倉庫。
在證書管理頁面,單擊上傳證書。
在CA信息面板,參考下表配置,單擊確認并啟用。
配置項
說明
名稱
為要上傳的私有證書設置一個名稱。
CA文件
本文選擇上傳根CA證書
root.crt
文件。
步驟三:導出客戶端證書
方式一:導出通過控制臺購買的客戶端證書
如果您已通過控制臺購買了客戶端證書,并需要通過該客戶端證書進行雙向認證,請執行以下操作導出客戶端證書。
登錄數字證書管理服務控制臺。
在左側導航欄,單擊私有證書。
在私有證書頁面,單擊私有CA頁簽,找到目標根CA證書。
單擊目標根CA證書前的圖標,找到目標子CA證書,在操作列單擊證書列表。
在證書列表頁面,找到目標客戶端證書,在操作列單擊下載,證書格式選擇瀏覽器可以識別的PFX格式。下載的證書文件中,包括
.pfx
后綴的客戶端證書文件以及.txt
后綴的客戶端私鑰加密密碼。
方式二:導出通過自簽證書生成的客戶端證書
如果您已上傳自簽CA證書至證書中心,并需要自簽CA證書生成的客戶端證書進行雙向認證,請執行以下操作生成客戶端證書。
遠程登錄ECS01,執行以下步驟,生成客戶端證書。具體操作,請參見ECS遠程連接操作指南。
執行以下命令,生成客戶端證書密鑰。
執行以下命令,生成客戶端證書請求文件。
執行以下命令,生成客戶端證書。
執行以下命令,將生成的客戶端證書
client.crt
轉換為瀏覽器可以識別的PKCS12文件。按照提示輸入設置的客戶端私鑰加密密碼。執行
ls
命令,可查看到生成的client.p12
客戶端證書文件。
openssl genrsa -out client.key 4096
openssl req -new -out client.csr -key client.key
openssl x509 -req -in client.csr -out client.crt -signkey client.key -CA root.crt -CAkey root.key -CAcreateserial -days 3650
openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12
步驟四:安裝客戶端證書
將生成的客戶端證書安裝到客戶端。
以Windows系統為例,雙擊客戶端證書,根據系統證書導入向導提示完成客戶端證書安裝。
步驟五:配置HTTPS雙向認證監聽
在頂部菜單欄,選擇ALB實例所屬的地域。
在實例頁面,找到目標ALB實例,單擊實例ID。
在監聽頁簽,單擊創建監聽,完成以下配置,然后單擊下一步。
此處僅列出和本文強相關的配置項,其他未列出的配置項使用默認值。
參數
說明
選擇監聽協議
選擇監聽的協議類型。
本文選擇HTTPS。
監聽端口
輸入用來接收請求并向后端服務器進行請求轉發的監聽端口,本文輸入443。
在配置SSL證書配置向導,選擇步驟一購買的服務器證書。
單擊修改展開高級配置,開啟高級配置中的啟用雙向認證。
選擇CA證書來源為阿里云簽發,在選擇默認CA證書下拉框中選擇步驟二:準備客戶端證書購買的CA證書。
選擇CA證書來源為非阿里云簽發,在選擇默認CA證書下拉框中選擇步驟二:準備客戶端證書上傳的自簽CA證書。
選擇TLS安全策略,然后單擊下一步。
在選擇服務器組配置向導,選擇服務器類型及服務器類型下的后端服務器組RS,查看后端服務器ECS01和ECS02的信息,然后單擊下一步。
在配置審核配置向導,確認配置信息,然后單擊提交。
步驟六:配置域名解析
在頂部菜單欄,選擇ALB實例所屬的地域。
選擇已創建的ALB實例,復制其對應的DNS名稱。
完成以下步驟添加CNAME解析記錄。
登錄域名解析控制臺。
在域名解析頁面單擊添加域名。
在添加域名對話框中輸入您的域名,然后單擊確認。
重要這里添加的域名為服務器證書綁定的域名。
您的域名需已完成TXT記錄驗證。
在目標域名的操作列單擊解析設置。
在解析設置頁面單擊添加記錄。
在添加記錄面板配置以下信息完成CNAME解析配置,然后單擊確認。
配置
說明
記錄類型
在下拉列表中選擇CNAME。
主機記錄
您的域名的前綴。
解析請求來源
選擇默認。
記錄值
輸入域名對應的CNAME地址,即您復制的ALB實例的DNS名稱。
TTL
全稱Time To Live,表示DNS記錄在DNS服務器上的緩存時間,本文使用默認值。
說明新增CNAME記錄實時生效,修改CNAME記錄取決于本地DNS緩存的解析記錄的TTL到期時間,默認為10分鐘。
添加時如遇添加沖突,請換一個解析域名。更多信息請參見解析記錄沖突規則。
步驟七:測試HTTPS雙向認證
在頂部菜單欄,選擇ALB實例所屬的地域。
在實例頁面,單擊目標實例ID,然后單擊監聽頁簽,查看健康檢查狀態。
當健康檢查狀態列為正常時,表示后端服務器可以正常接收處理ALB的HTTPS監聽轉發的請求。
在瀏覽器中,輸入
https://domain:port
,在彈出的對話框中選擇用于驗證客戶端身份的證書。刷新瀏覽器,您可以觀察到客戶端的請求在ECS01和ECS02服務器之間的轉換。