使用Terraform可以为站点创建 mTLS 客户端证书,用于客户端与边缘之间的双向认证等场景。
安装Terraform并配置权限
在本地安装和配置Terraform
您可以参考安装和配置Terraform,在本地使用Terraform。
由于阿里云账号(主账号)拥有资源的所有权限,其AccessKey一旦泄露风险巨大,所以建议您使用满足最小化权限需求的RAM用户的AccessKey。具体操作方式请参见创建AccessKey。
创建环境变量,用于存放身份认证信息。
在AccessKey管理页面上创建和查看您的AccessKey。
若无对应环境变量,在执行terraform模板时无法确认身份信息,将会导致调用失败。
使用在线服务(免安装和权限配置)
如果您不想安装Terraform,可以直接使用在线服务Cloud Shell。
阿里云Cloud Shell是一款帮助您运维的免费产品,预装了Terraform的组件,并配置好身份凭证(Credentials)。因此您可直接在Cloud Shell中运行Terraform的命令。更多信息,请参见使用Terraform快速创建资源。
通过Cloud Shell使用Terraform时,由于其销毁特性会导致数据丢失,因此建议您使用Cloud Shell做简单、快速的操作,例如调试。更多使用限制,请参见使用限制。
涉及的资源
查询站点:alicloud_esa_sites(数据源;若已有站点可仅查询并引用
instance_id/site_id)站点:alicloud_esa_site(若需新建站点;已有站点可省略本资源并改用数据源引用)
配置客户端证书
创建一个名为
main.tf的配置文件,然后将以下代码复制到配置文件中。# 1. 查询指定套餐档位下的站点(用于获取 instance_id) data "alicloud_esa_sites" "default" { plan_subscribe_type = "basic" # 与控制台套餐一致 } # 2. 创建站点(若已有站点请删除本块并改为直接引用已有 site_id) resource "alicloud_esa_site" "default" { site_name = "DOMAIN" # 站点主域名 instance_id = data.alicloud_esa_sites.default.sites[0].instance_id # 套餐实例 ID coverage = "overseas" # 加速区域,按业务选择 access_type = "NS" # 接入方式,如 NS / CNAME } # 3. 为站点创建客户端证书 resource "alicloud_esa_client_certificate" "default" { site_id = alicloud_esa_site.default.id # 绑定到上方站点;若仅用已有站点,可改为 data 源中的 site_id pkey_type = "RSA" # 私钥算法 validity_days = 365 # 有效天数 }进入配置文件所在目录,执行如下命令,初始化Terraform环境。
terraform init执行如下命令,验证Terraform语法与配置。
terraform validate执行如下命令,预览执行结果。
terraform plan执行如下命令,执行Terraform脚本。
terraform apply依据提示输入
yes确认执行即可。
验证结果
执行terraform show命令
在 terraform apply 成功后、清理资源前,可在工作目录执行以下命令,核对 alicloud_esa_client_certificate 与 alicloud_esa_site 资源状态。
terraform show登录控制台查看
登录ESA
在左侧导航栏,选择。确认已为该站点生成客户端证书且有效期等参数与配置一致。
(可选)清理资源
当您不再需要上述通过Terraform创建或管理的资源时,请运行terraform destroy命令以释放资源。
terraform destroy相关参考
关键参数说明
Terraform 的 alicloud_esa_client_certificate资源中,常用字段说明如下表所示。
参数 | 说明 | 备注 |
| 所属 ESA 站点的 ID。 | 与 |
| 私钥类型,示例为 | 可选值以 Registry 文档为准。 |
| 证书有效天数,示例为 | 到期前需在控制台或 Terraform 中更新/轮换。 |