ASM支持以图形化的方式为域名添加证书,便于您使用HTTPS等协议访问域名,提升服务网关的安全性。本文介绍如何为域名添加新建证书和已有证书。
背景信息
本文以域名为aliyun.com的myexampleapp服务为例,为aliyun.com域名添加新建证书或已有证书,添加成功后,您可以通过ASM网关使用HTTPS协议访问域名为aliyun.com的myexampleapp服务。为域名添加新建证书
- 创建示例服务myexampleapp。
- 使用以下内容,创建myexample-nginx.conf。
本文示例服务是基于Nginx实现的,您需要为Nginx服务器创建配置文件,以域名
aliyun.com的服务为例,以下内容定义请求根路径直接返回字样
Welcome to aliyun.com!
及状态码
200
。
events {
}
http {
log_format main '$remote_addr - $remote_user [$time_local] $status '
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
server {
listen 80;
location / {
return 200 'Welcome to aliyun.com!';
add_header Content-Type text/plain;
}
}
}
- 执行以下命令,创建Nginx服务器的配置项。
kubectl create configmap myexample-nginx-configmap --from-file=nginx.conf=./myexample-nginx.conf
- 使用以下内容,创建myexampleapp.yaml。
apiVersion: v1
kind: Service
metadata:
name: myexampleapp
labels:
app: myexampleapp
spec:
ports:
- port: 80
protocol: TCP
selector:
app: myexampleapp
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myexampleapp
spec:
selector:
matchLabels:
app: myexampleapp
replicas: 1
template:
metadata:
labels:
app: myexampleapp
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx
readOnly: true
volumes:
- name: nginx-config
configMap:
name: myexample-nginx-configmap
- 执行以下命令,创建域名为aliyun.com的内部服务。
kubectl apply -f myexampleapp.yaml
- 在ASM网关中导入myexampleapp服务。
- 登录ASM控制台,在左侧导航栏,选择。
- 在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择。
- 在入口网关页面,单击目标网关的名称。
- 在网关详情页面左侧导航栏,单击上游服务。
- 在上游服务页面,单击导入服务。
- 在导入服务页面,选择命名空间,选中myexampleapp服务,单击
图标,然后单击确认。
- 创建证书和私钥。
- 在openssl中执行以下命令,创建根证书和私钥。
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服务器生成证书和私钥。
- 执行以下命令,创建证书aliyun.com.crt。
openssl x509 -req -days 365 -CA aliyun.root.crt -CAkey aliyun.root.key -set_serial 0 -in aliyun.com.csr -out aliyun.com.crt
- 执行以下命令,创建私钥aliyun.com.key。
openssl req -out aliyun.com.csr -newkey rsa:2048 -nodes -keyout aliyun.com.key -subj "/CN=aliyun.com/O=myexample organization"
- 添加证书和私钥挂载卷到ASM网关。
- 登录ASM控制台,在左侧导航栏,选择。
- 在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择。
- 在入口网关页面,单击目标网关的名称。
- 在网关详情页面左侧导航栏,单击域名/证书。
- 在域名/证书页面,单击证书页签,然后单击创建。
- 在新建证书页面,输入名称,将aliyun.com.crt的内容复制到证书文本框,aliyun.com.key的内容复制到私钥文本框,然后单击创建。
- 绑定域名与证书。
- 在域名/证书页面,单击域名页签,然后单击创建。
- 在新建域名页面,设置域名为*.aliyun.com,协议为HTTPS,输入端口名称和端口,选择证书,选中是否使用TLS保护连接,然后单击创建。
选中
是否使用TLS保护连接,表示只有TLS请求才能访问到域名。

- 执行以下命令,使用HTTPS协议访问aliyun.com,验证绑定域名与证书是否成功。
curl -k -H Host:www.aliyun.com --resolve www.aliyun.com:443:<ASM网关地址> https://www.aliyun.com
预期输出:
Welcome to aliyun.com!
如果使用HTTPS协议访问aliyun.com成功,表明绑定域名与证书成功。
为域名添加已有证书
- 创建示例服务myexampleapp。
- 使用以下内容,创建myexample-nginx.conf。
本文示例服务是基于Nginx实现的,您需要为Nginx服务器创建配置文件,以域名
aliyun.com的服务为例,以下内容定义请求根路径直接返回字样
Welcome to aliyun.com!
及状态码
200
。
events {
}
http {
log_format main '$remote_addr - $remote_user [$time_local] $status '
'"$request" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
server {
listen 80;
location / {
return 200 'Welcome to aliyun.com!';
add_header Content-Type text/plain;
}
}
}
- 执行以下命令,创建Nginx服务器的配置项。
kubectl create configmap myexample-nginx-configmap --from-file=nginx.conf=./myexample-nginx.conf
- 使用以下内容,创建myexampleapp.yaml。
apiVersion: v1
kind: Service
metadata:
name: myexampleapp
labels:
app: myexampleapp
spec:
ports:
- port: 80
protocol: TCP
selector:
app: myexampleapp
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: myexampleapp
spec:
selector:
matchLabels:
app: myexampleapp
replicas: 1
template:
metadata:
labels:
app: myexampleapp
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx
readOnly: true
volumes:
- name: nginx-config
configMap:
name: myexample-nginx-configmap
- 执行以下命令,创建域名为aliyun.com的内部服务。
kubectl apply -f myexampleapp.yaml
- 在ASM网关中导入myexampleapp服务。
- 登录ASM控制台,在左侧导航栏,选择。
- 在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择。
- 在入口网关页面,单击目标网关的名称。
- 在网关详情页面左侧导航栏,单击上游服务。
- 在上游服务页面,单击导入服务。
- 在导入服务页面,选择命名空间,选中myexampleapp服务,单击
图标,然后单击确认。
- 导入证书至ASM网关。
在已有证书中添加
istioGateway:<ASM网关名称>
和
provider:asm
标签。添加标签成功后,证书将会自动出现在ASM控制台的
证书页面。

- 绑定域名与证书。
- 登录ASM控制台,在左侧导航栏,选择。
- 在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择。
- 在入口网关页面,单击目标网关的名称。
- 在网关详情页面左侧导航栏,单击域名/证书。
- 在域名/证书页面,单击域名页签,然后单击创建。
- 在新建域名页面,设置域名为*.aliyun.com,协议为HTTPS,输入端口名称和端口,选择证书,选中是否使用TLS保护连接,然后单击创建。
选中
是否使用TLS保护连接,表示只有TLS请求才能访问到域名。

- 执行以下命令,使用HTTPS协议访问aliyun.com,验证绑定域名与证书是否成功。
curl -k -H Host:www.aliyun.com --resolve www.aliyun.com:443:<ASM网关地址> https://www.aliyun.com
预期输出:
Welcome to aliyun.com!
如果使用HTTPS协议访问aliyun.com成功,表明绑定域名与证书成功。