使用指南

API 凭证

保存 RAM AccessKey,供多个阿里云部署目标复用。

将证书推送到 阿里云 CDN、DCDN、ESA、CLB、ALB、NLB、OSS、云虚拟主机或 CAS 证书库。请使用 RAM 子用户 的 AccessKey 调用 OpenAPI,不要使用主账号密钥。

安全提示:建议单独创建一个仅用于证书自动部署的 RAM 用户,授予最小权限,并妥善保管 AccessKey Secret(仅创建时完整显示一次)。

前置说明

NestSSL 按产品调用对应 OpenAPI:

产品 部署方式 是否走 CAS 收费「云产品部署」
CDN / DCDN / ESA / CLB / ALB / NLB / OSS 产品 OpenAPI 换证(CDN/DCDN 先上传 CAS 再绑定 CertId) ❌ 否(免费 API)
云虚拟主机 / CAS 上传到 CAS 证书库 ❌ 否(仅上传;绑定仍须控制台)

保存凭证时请同时选择:

  • 云资源地域:CLB/ALB/NLB/OSS 等实例所在地域
  • CAS 证书库地域:仅中国站(cn-hangzhou)或国际站(ap-southeast-1),由阿里云账号站点决定,不是资源地域

下文以 自定义策略(最小权限) 为例。本站 API 凭证 页也会按您已创建的目标类型,动态给出建议权限 JSON,可与下文对照。

命名说明:传统型负载均衡现称 CLB(控制台);OpenAPI 产品码仍为 slb:。本站侧栏与文档统一写 CLB。


一、创建 RAM 用户(API 访问)

  1. 打开 RAM 用户控制台
  2. 点击 「创建用户」
  3. 填写用户信息,例如:
    • 登录名称:nestssl(可自定;完整 ID 形如 nestssl@您的账号ID.onaliyun.com)
    • 显示名称:NestSSL 证书自动部署
    • 备注:用于证书自动部署
  4. 在 访问配置 中:
    • 不要 勾选「使用控制台访问」
    • 勾选「使用永久 AccessKey 访问」(用于 API 或其他开发工具访问)
  5. 点击 「确定」,创建成功页会直接显示 AccessKey ID 与 AccessKey Secret

若当时未保存 Secret,可进入该用户 → 认证管理 → 创建 AccessKey 重新生成(旧 Key 建议及时禁用)。


二、创建自定义权限策略

2.1 进入策略列表

打开 RAM 权限策略,可查看账号下已有策略;点击左上角 「创建权限策略」 开始新建。

也可直接访问创建页:创建权限策略。

2.2 按产品需要的 Action

产品 Action 用途
使用 CAS 的产品 yundun-cert:UploadUserCertificate 上传证书到 CAS
CAS / 云虚拟主机,以及 CDN / DCDN yundun-cert:ListUserCertificateOrder CAS、云虚拟主机的目标检查读 CAS 列表;CDN、DCDN 的目标检查读域名,并同时读 CAS 列表
CLB / ALB / NLB / OSS yundun-cert:ListUserCertificateOrder 这些目标检查读各自资源,不读 CAS 列表。ESA 目标检查也只读自身资源,且不使用这条 CAS 列表权限。API 凭证页的测试会另读 CAS 列表,因此上列产品仍保留该权限建议
CAS / CDN / DCDN / CLB yundun-cert:GetUserCertificateDetail 复用前核验证书是否仍在。本站传 CertFilter=true,不请求证书和私钥;该权限本身不是仅元数据,默认或 false 时可读取证书和私钥
ALB / NLB yundun-cert:GetUserCertificateDetail 换证前确认监听当前默认证保护的域名。本站传 CertFilter=true,不请求证书和私钥
OSS / 云虚拟主机 不含 GetUserCertificateDetail 这些产品当前直接上传,不走证书详情核验
CDN cdn:DescribeCdnDomainDetail、cdn:SetCdnDomainSSLCertificate 查询/绑定 CDN 加速域名证书
DCDN dcdn:DescribeDcdnDomainDetail、dcdn:SetDcdnDomainSSLCertificate 查询/绑定全站加速域名证书
ESA esa:GetSite、esa:ListCertificates、esa:ListInstanceQuotasWithUsage、esa:SetCertificate、esa:DeleteCertificate 查询站点、列证书、查配额、按主机名新增或更新边缘证书;配额不足时会删除站点上任意一张已过期的自定义上传证(type=upload)
CLB slb:DescribeLoadBalancerAttribute、slb:DescribeDomainExtensions、slb:DescribeLoadBalancerHTTPSListenerAttribute、slb:DescribeServerCertificates、slb:UploadServerCertificate、slb:SetDomainExtensionAttribute、slb:SetLoadBalancerHTTPSListenerAttribute 查询实例、扩展域名、监听、证书库,以及上传和换证。最小策略不用 slb:Describe* / slb:Set* 通配

按目标类型选取对应子集,并保留您已有的无关授权,不必删除旧策略。Resource 为 * 的示例覆盖该账号下相应资源,并不限制到单个域名或实例。下文第一份 JSON 是 全产品可选并集;第二份是 CDN + CLB 共用凭证 的完整可复制策略。

2.3 使用脚本编辑填入 JSON

  1. 在创建页切换到 「脚本编辑」 选项卡
  2. 将下方 JSON 完整替换 编辑器中的默认内容
  3. 点击 「继续编辑基本信息」(或「下一步」)
  4. 填写 策略名称,例如:NestSSL证书管理;备注可留空
  5. 点击 「确定」 完成创建

全产品并集(可选;专用产品请改用对应子集):

JSON
{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "alb:GetListenerAttribute",
                "alb:UpdateListenerAttribute",
                "cdn:DescribeCdnDomainDetail",
                "cdn:SetCdnDomainSSLCertificate",
                "dcdn:DescribeDcdnDomainDetail",
                "dcdn:SetDcdnDomainSSLCertificate",
                "esa:DeleteCertificate",
                "esa:GetSite",
                "esa:ListCertificates",
                "esa:ListInstanceQuotasWithUsage",
                "esa:SetCertificate",
                "nlb:GetListenerAttribute",
                "nlb:UpdateListenerAttribute",
                "oss:ListCname",
                "oss:PutCname",
                "slb:DescribeDomainExtensions",
                "slb:DescribeLoadBalancerAttribute",
                "slb:DescribeLoadBalancerHTTPSListenerAttribute",
                "slb:DescribeServerCertificates",
                "slb:SetDomainExtensionAttribute",
                "slb:SetLoadBalancerHTTPSListenerAttribute",
                "slb:UploadServerCertificate",
                "yundun-cert:GetUserCertificateDetail",
                "yundun-cert:ListUserCertificateOrder",
                "yundun-cert:UploadUserCertificate"
            ],
            "Resource": "*"
        }
    ]
}

CDN 与 CLB 共用同一 AccessKey 时,复制下面这份(CAS 三项 + CDN 两项 + CLB 七项):

JSON
{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "cdn:DescribeCdnDomainDetail",
                "cdn:SetCdnDomainSSLCertificate",
                "slb:DescribeDomainExtensions",
                "slb:DescribeLoadBalancerAttribute",
                "slb:DescribeLoadBalancerHTTPSListenerAttribute",
                "slb:DescribeServerCertificates",
                "slb:SetDomainExtensionAttribute",
                "slb:SetLoadBalancerHTTPSListenerAttribute",
                "slb:UploadServerCertificate",
                "yundun-cert:GetUserCertificateDetail",
                "yundun-cert:ListUserCertificateOrder",
                "yundun-cert:UploadUserCertificate"
            ],
            "Resource": "*"
        }
    ]
}

三、为 RAM 用户授权

  1. 返回 RAM 用户列表,找到上一步创建的用户(如 nestssl@….onaliyun.com)
  2. 在该用户行的 操作 列点击 「新增授权」
  3. 选择范围:保持默认「云账号全部资源」即可
  4. 选择策略:在搜索框输入策略名(如 NestSSL),勾选刚创建的 「NestSSL证书管理」 自定义策略
  5. 确认右侧 已选择权限策略 列表中出现该策略后,点击 「确定」

授权完成后,即可用该 AccessKey 在本站添加凭证并测试各产品目标。


四、在本站配置

建议分两步:先凭证,后目标。

4.1 添加 API 凭证

  1. 登录 NestSSL → 证书部署 → 左侧 阿里云 → API 凭证
  2. 点击 「+ 新增凭证」,填写凭证名称、区域、AccessKey ID 与 AccessKey Secret
  3. CAS 证书库地域只选中国站 cn-hangzhou 或国际站 ap-southeast-1,由账号站点决定。CLB / ALB / NLB / OSS 的 资源地域填实例所在地域(例如 CLB 在上海选「华东 2(上海)cn-shanghai」)。两者不是同一个字段,不要互相代替
  4. 保存后可被多个 CDN、DCDN、ESA、CLB、ALB、NLB、OSS 等目标复用

4.2 添加部署目标

在左侧选择产品类型并 「+ 新增目标」,各产品必填参数与说明见:

类型 文档
CDN CDN 部署
DCDN DCDN 部署
ESA ESA 部署
CLB CLB 部署(含默认证安全说明)
ALB ALB 部署
NLB NLB 部署
OSS OSS 部署
云虚拟主机 云虚拟主机
CAS CAS 证书库

通用步骤:选择 API 凭证 → 填写参数 → 保存目标 → 在目标卡片点击 测试 或 测试连接 → 到 关联与推送 勾选证书(可选 自动)。

部署前请确保证书记录或密钥库中已保存 私钥。


五、上传后的操作

  • CDN / DCDN / ESA / CLB / ALB / NLB / OSS:部署成功即表示对应产品证书已更新(ESA 另需站点已开启 SSL/TLS)
  • 云虚拟主机 / 仅 CAS:证书在 CAS 控制台 可见后,请在对应产品控制台完成绑定

注意事项

  • 云资源地域(region_id)与 CAS 证书库地域(cas_region)是两回事:前者对应 CLB/ALB/NLB/OSS 等实例所在地域;后者仅中国站 cn-hangzhou 或国际站 ap-southeast-1,由账号站点决定。CDN/DCDN 换证的 CertRegion 必须与实际上传 CertId 所在 CAS 证书库一致。历史凭证未填写时按中国站处理。
  • 同一本站证书版本、同一凭证及 AccessKey 身份、同一 CAS 地域时,CDN、DCDN、CAS、CLB 优先共用 CAS 证书编号。CLB 另有资源地域里的服务器证书编号;两个证书库各留一份,不代表又上传了一次。不同凭证行、账号、地域或新版本不共用。ALB、NLB、OSS、云虚拟主机当前直接上传,不走这套共享核验。
  • CAS 复用只核验本站已记录的 CertId。可靠确认该编号不存在或指纹不符后,重新上传并更新映射,不会遍历 CAS 云端库寻找其他同指纹证书。CLB 证书库才会在本次接口返回的服务器证书中查找其他同指纹条目,找到则复用,没有时才上传。权限拒绝、超时、5xx 或响应不完整不会当成已删除;绑定前证书消失则本次失败,下次重试再恢复。不能保证云端绝对只上传一次,重试仍可能留下重复证书。
  • 本站不自动删除 CAS 旧证,也不自动删除或批量清理 CLB 证书。名称冲突时先核对具体冲突和现有绑定,不要直接删除「当日旧证」再试。
  • ESA 按主机名分开存放,稳定名称是 nestssl-{主机名}-{摘要}。同一站点上不同主机名会各新增一张证,不会互相覆盖;同一主机名再次推送才原地更新。配额不足时会删除站点上任意一张已过期的自定义上传证(type=upload),不删除仍有效的证书。这与 CAS / CLB 不自动删证无关。
  • 若「测试连接」或部署提示权限不足,请核对策略是否已授权给 当前使用的 RAM 用户,且 JSON 中 Action 拼写无误
  • 目标上的「测试连接」成功只证明该目标当时的读取:CAS 与云虚拟主机读 CAS 列表;CDN / DCDN 读域名以及 CAS 列表;CLB、ESA、ALB、NLB、OSS 读各自资源。API 凭证页的测试另读 CAS 列表,与某个产品目标的检查不是同一次调用。普通连接测试不同时验证证书详情读取、上传和换绑,这些要等实际推送确认

备选方案:系统策略(权限较宽)

若不需要最小权限,可在 新增授权 时直接搜索并添加阿里云 系统策略(可多选组合):

系统策略 覆盖
AliyunYundunCertFullAccess CAS 证书服务
AliyunESAFullAccess 边缘安全加速 ESA
AliyunSLBFullAccess 传统型负载均衡 CLB(系统策略名仍含 SLB)
AliyunALBFullAccess 应用型负载均衡 ALB
AliyunNLBFullAccess 网络型负载均衡 NLB
各产品对应 FullAccess(如 CDN、DCDN) 对应云产品

配置更简单,但权限范围大于 NestSSL 实际所需,生产环境仍建议使用上文自定义策略。


相关文档