在ASM网关的CLB侧创建HTTPS监听

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生成证书和私钥。

  1. 执行以下命令,创建根证书和私钥。

    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
  2. 创建SSL证书。

    1. 传统型负载均衡CLB控制台左侧导航栏,选择传统型负载均衡 CLB > 证书管理

    2. 证书管理页面,单击创建证书

    3. 创建证书面板,选择阿里云签发证书,从证书列表最下方单击创建SSL证书

    4. 数字证书管理服务页面的左侧导航栏,选择证书管理 > SSL证书管理

    5. 单击上传证书页签的上传证书,填写证书名称aliyun.com,将生成的根证书和私钥对应上传到证书文件证书私钥输入框中。单击确定,并忽略证书链的提示。

  3. 通过传统型负载均衡CLB控制台创建证书。具体操作,请参见选择阿里云签发证书

步骤二:创建HTTPS类型的监听

ASM提供了自定义入口网关服务的功能,便于您通过YAML配置的方式定义相关功能参数。具体操作,请参见使用KubeAPI管理入口网关

  1. 将以下内容,补充到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}步骤一获取。

  2. 执行以下命令,部署入口网关。

    kubectl apply -f ingressgateway.yaml

步骤三:验证HTTPS监听是否成功

  1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

  2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择ASM网关 > 入口网关

  3. 入口网关页面,查看目标网关的服务地址

    服务地址即为目标网关的IP地址。

  4. 执行以下命令,通过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监听配置成功。