HTTPS單向認證只對服務器做認證,HTTPS雙向認證對服務器和客戶端做雙向認證。當您在處理一些關鍵業務時,HTTPS雙向認證通過對通信雙方做雙向認證,為您的業務提供更高的安全性。本文為您介紹如何使用CLB部署HTTPS雙向認證。
配置步驟
本指南中使用自簽名的CA證書為客戶端證書簽名,完成以下操作配置HTTPS監聽(雙向認證):
前提條件
您已創建了CLB實例。
您已經創建了后端服務器ECS01和ECS02,并部署了2個不同的應用服務。
步驟一:購買服務器證書
您可以從阿里云數字證書管理服務控制臺購買服務器證書或者在其他服務商處購買服務器證書。您可以通過瀏覽器檢查服務器發送的證書是否是由自己信賴的中心簽發的。
本文以從阿里云數字證書管理服務控制臺購買服務器證書為例。更多信息,請參見購買SSL證書。
購買SSL證書時需要綁定域名,請確保您擁有真實可用的域名。
步驟二:使用OpenSSL生成CA證書
登錄到任意一臺安裝有OpenSSL工具的Linux機器。
執行以下命令,創建根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
。
步驟三:生成客戶端證書
執行以下命令,生成客戶端證書密鑰。
執行以下命令,生成客戶端證書請求文件。Common Name需要配置為您的域名。
執行以下命令,生成客戶端證書。
執行以下命令,將生成的客戶端證書
client.crt
轉換為瀏覽器可以識別的PKCS12文件。按照提示輸入設置的客戶端私鑰加密密碼。執行
ls
命令,可查看到生成的client.key
、client.crt
、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客戶端
雙擊客戶端證書client.p12
,根據系統證書導入向導提示完成客戶端證書安裝。
Linux客戶端
將此前生成的客戶端證書文件client.key
、client.crt
、root.crt
,上傳至Linux客戶端任意目錄。
本文示例為/home/ca
目錄,并執行sudo chmod 700 /home/ca
修改目錄權限。
步驟五:上傳服務器證書和CA證書
在左側導航欄,選擇 ,然后單擊創建證書,上傳服務器證書。
在創建證書面板,單擊上傳非阿里云簽發證書,完成以下配置,然后單擊創建。
配置
說明
證書名稱
輸入證書名稱。
證書類型
本文選擇服務器證書。
公鑰證書
復制服務器證書內容。
私鑰
復制服務器證書的私鑰內容。
證書部署地域
選擇CLB實例所屬地域。
在證書管理頁面,單擊創建證書,上傳CA證書。
在創建證書面板,單擊上傳非阿里云簽發證書,完成以下配置,然后單擊創建。
配置
說明
證書名稱
輸入證書名稱。
證書類型
本文選擇CA證書。
客戶端CA公鑰證書
上傳客戶端CA公鑰證書。
證書部署地域
選擇CLB實例所屬地域。
步驟六:配置HTTPS雙向認證監聽
單擊已創建的負載均衡實例ID。
在監聽頁簽下,單擊添加監聽。
在協議&監聽頁簽下,完成以下配置,然后單擊下一步。
選擇監聽協議:HTTPS
監聽端口:443
在SSL證書頁簽下,選擇已上傳的服務器證書。
單擊高級設置后面的修改,啟用雙向認證,選擇已上傳的CA證書,然后單擊下一步。
選擇默認服務器組,單擊添加,添加后端服務器。
其他參數保持默認值,單擊下一步至提交,完成監聽配置。
步驟七:測試HTTPS雙向認證
Windows客戶端
在瀏覽器中,輸入
https://ip:port
,ip為CLB的公網服務地址。在彈出的對話框中根據提示確認證書。刷新瀏覽器,您可以觀察到請求在兩臺ECS服務器之間轉換。
Linux客戶端
登錄已安裝證書的Linux客戶端,執行以下命令驗證CLB雙向認證。
sudo curl --cert /home/ca/client.crt --key /home/ca/client.key --cacert /home/ca/ca.crt https://<服務器證書綁定的域名>:<端口>
收到如下所示的回復報文,則表示客戶端和服務端已完成雙向認證,并將請求分發至兩臺ECS。