ASM支持以图形化的方式为域名添加证书,便于您使用HTTPS等协议访问域名,提升服务网关的安全性。本文介绍如何为域名添加证书。
前提条件
已在ASM实例关联的集群中部署应用,且ASM实例为企业版或旗舰版。
已部署入口网关。具体操作,请参见创建入口网关。
已为命名空间注入Sidecar。具体操作,请参见开启Sidecar自动注入。
已获取ASM网关地址。具体操作,请参见获取ASM网关地址。
背景信息
本文以域名为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。
执行以下命令,创建域名为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实例从1.17版本起,支持使用证书管理页面的证书。建议您尽快将证书迁移至证书管理,即直接在证书管理页面新建一个同名证书,自动会覆盖已创建的证书,无需手动删除。关于升级实例的具体操作,请参见升级ASM实例。
证书管理页面的证书会自动在数据面创建同名Secret。若已存在同名Secret,则会用新内容覆盖该Secret。
ASM实例版本为1.17以下
登录ASM控制台,在左侧导航栏,选择 。
在网格管理页面,单击目标实例名称,然后在左侧导航栏,选择 。
在入口网关页面,单击目标网关的名称,然后在网关详情页面左侧导航栏,单击域名/证书。
在域名/证书页面,单击证书页签,然后单击创建。
在新建证书页面,输入名称,将
aliyun.com.crt
的内容复制到证书文本框,aliyun.com.key
的内容复制到私钥文本框,然后单击创建。
ASM实例版本为1.17及以上
绑定域名与证书。
登录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成功,表明绑定域名与证书成功。