ASM網關支援HTTPS安全支援和認證動態載入功能,以此提高ASM網關的安全性。您可以在ASM網關的CLB側綁定認證,建立HTTPS類型的監聽。HTTPS請求將在CLB側解密,然後以HTTP請求的形式發送給後端的網關Pod。本文介紹如何在ASM網關的CLB側綁定認證,建立HTTPS類型的監聽。
前提條件
步驟一:準備CLB需要的認證
已建立認證和私密金鑰
如果您已擁有針對aliyun.com可用的認證和私密金鑰,需要將私密金鑰命名為aliyun.com.key,認證命名為aliyun.com.crt。
未建立認證和私密金鑰
如果您未建立認證和私密金鑰,可以通過openssl,參照以下步驟為aliyun.com產生認證和私密金鑰。
執行以下命令,建立根憑證和私密金鑰。
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -subj '/O=myexample Inc./CN=aliyun.com' -keyout aliyun.root.key -out aliyun.root.crt建立SSL認證。
在傳統型負載平衡CLB控制台左側導覽列,選擇。
在認證管理頁面,單擊建立認證。
在建立認證面板,選擇阿里雲簽發認證,從認證列表最下方單擊建立SSL認證。
在數位憑證管理服務頁面的左側導覽列,選擇認證管理 > SSL認證管理。
單擊上傳認證頁簽的上傳認證,填寫認證名稱為aliyun.com,將產生的根憑證和私密金鑰對應上傳到認證檔案和認證私密金鑰輸入框中。單擊確定,並忽略憑證鏈結的提示。
通過傳統型負載平衡CLB控制台建立認證。具體操作,請參見選擇阿里雲簽發認證。
步驟二:建立HTTPS類型的監聽
ASM提供了自訂入口網關服務的功能,便於您通過YAML配置的方式定義相關功能參數。具體操作,請參見使用KubeAPI管理入口網關。
將以下內容,補充到ingressgateway.yaml檔案中。
spec: .... ports: - name: http-0 port: 80 protocol: HTTP targetPort: 80 - name: https-1 port: 443 protocol: HTTPS targetPort: 80 .... serviceAnnotations: service.beta.kubernetes.io/alibaba-cloud-loadbalancer-cert-id: "${YOUR_CERT_ID}" service.beta.kubernetes.io/alibaba-cloud-loadbalancer-protocol-port: 'https:443' .... serviceType: LoadBalancer通過
serviceAnnotations建立一個HTTPS類型的CLB。以443為連接埠的HTTPS請求將在CLB側解密,然後以HTTP請求的形式發送給後端的Pod的80連接埠。YAML中${YOUR_CERT_ID}由步驟一擷取。執行以下命令,部署入口網關。
kubectl apply -f ingressgateway.yaml
步驟三:驗證HTTPS監聽是否成功
登入ASM控制台,在左側導覽列,選擇。
在網格管理頁面,單擊目標執行個體名稱,然後在左側導覽列,選擇。
在入口網關頁面,查看目標網關的服務地址。
服務地址即為目標網關的IP地址。
執行以下命令,通過HTTPS協議訪問productpage服務。
命令中
${替換成入口網關真實IP}由上一步擷取。curl -k -H Host:a.aliyun.com --resolve a.aliyun.com:443:${替換成入口網關真實IP} https://a.aliyun.com/productpage -I樣本輸出:
HTTP/2 200 date: Fri, 13 Jan 2023 07:11:45 GMT content-type: text/html; charset=utf-8 content-length: 5294 vary: Accept-Encoding x-envoy-upstream-service-time: 23加密流量經過CLB時被解密為明文,然後進入叢集。該結果表明HTTPS監聽配置成功。