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
执行以下命令,为aliyun.com服务器生成证书和私钥。
openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization" openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt
通过传统型负载均衡CLB控制台创建证书。具体操作,请参见选择阿里云签发证书。
配置HTTPS监听时,您可以直接使用SSL证书服务中的证书,也可以上传第三方签发的服务器证书和CA证书。
步骤二:创建HTTPS类型的监听
ASM提供了自定义入口网关服务的功能,便于您通过YAML配置的方式定义相关功能参数。具体操作,请参见使用KubeAPI管理入口网关。
使用以下内容,创建ingressgateway.yaml文件。
通过
serviceAnnotations
创建一个HTTPS类型的CLB。以443为端口的HTTPS请求将在CLB侧解密,然后以HTTP请求的形式发送给后端的Pod的80端口。YAML中${YOUR_CERT_ID}
由步骤一获取。apiVersion: istio.alibabacloud.com/v1beta1 kind: IstioGateway metadata: name: ingressgateway namespace: istio-system 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
执行以下命令,部署IstioGateway。
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监听配置成功。