使用 acme.sh 为在腾讯云(DNSPod)解析的域名自动申请证书(API3.0 / 腾讯云(DNSPod)API 密钥版本)
ACME(自动证书管理环境)是一个互联网工程任务组维护的协议,它允许自动化 Web 服务器证书的部署,acme.sh 是支持 ACME 协议流行的客户端之一,可以通过其实现 SSL 证书的自动申请、续期等等。一直以来,使用 acme.sh 为域名申请证书都是通过 DNSPod API 来实现的,但由于 DNSPod API 后续将不再维护,同时旧版DNSPod API 将不再有服务承诺,以及旧版 API 存在着接口不稳定、权限无法细分控制、国内站和国际站接口不统一等问题,因此笔者基于 dns_dp 脚本,适配了腾讯云 API3.0 版本(dns_tencent)。升级后的脚本将同时支持 DNSPod 国内站和国际站(暂仅支持国内站,国际站部分接口官方团队正在排期适配,预计10月完成),不再需要针对国内站和国际站单独适配,同时支持使用子账号 API 密钥申请证书,权限可细分控制,接口更加稳定,使用更加方便、安全。
截止本文发布时(2023-09-14),腾讯云 API3.0 脚本未被合并到 master 分支,因此需要手动下载脚本放置到/.acme.sh/dnsapi/目录下,或从 dev 分支安装,后续脚本合并到 master 分支后,可直接使用 acme.sh 安装脚本一键安装或更新已安装的 acme.sh 客户端使用 dns_tencent。
安装 acme.sh
全新安装
适用于未安装 acme.sh 的用户,使用以下命令安装 acme.sh 客户端:
安装 git
由于腾讯云 API3.0 脚本未被合并到 master 分支,因此需要使用 git 从 dev 分支克隆 acme.sh 客户端:
1 | CentOS |
安装 acme.sh
1 | git clone -b dev https://github.com/acmesh-official/acme.sh.git |
请将 my@example.com 替换为您的邮箱地址
旧版升级
适用于已安装 acme.sh 的用户,需要手动从 dev 分支下载 dns_tencent.sh 脚本,放置到/.acme.sh/dnsapi/目录下。
获取腾讯云 SecretId 和 SecretKey
方式一:使用主账号 API 密钥
方式二:使用子账号 API 密钥
步骤一:新建权限策略
选择
按策略语法创建
-空白模板
,填写基本信息,并将策略语法修改为以下内容,并点击完成
创建。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17{
"statement": [
{
"action": [
"dnspod:DescribeRecordFilterList",
"dnspod:DescribeRecordList",
"dnspod:CreateRecord",
"dnspod:DeleteRecord"
],
"effect": "allow",
"resource": [
"*"
]
}
],
"version": "2.0"
}如您需要更精细的权限控制,可根据实际需求修改策略语法,如配置资源六段式等,详情请参考 CAM-DNS 解析 DNSPod。
步骤二:新建子账号并关联权限策略
选择快速创建,填写用户信息,并选择
编程访问
。配置用户权限,仅选择刚刚创建的权限策略,并点击
确定
保存。点击
创建用户
,完成子账号创建,并记录保存 SecretId 和 SecretKey。
申请证书
- 将获取到的 SecretId 和 SecretKey 导入环境变量中,以便 acme.sh 调用。例如:
1
2export Tencent_SecretId="<Your SecretId>"
export Tencent_SecretKey="<Your SecretKey>"1
2export Tencent_SecretId="AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
export Tencent_SecretKey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" - 使用 acme.sh 申请证书,例如:例如:
1
acme.sh --issue --dns dns_tencent -d example.com -d *.example.com
运行后,acme.sh 将自动为您的域名申请证书,并将证书文件保存在1
acme.sh --issue --dns dns_tencent -d acme.dnstest.cc -d *.acme.dnstest.cc
~/.acme.sh/example.com/
目录下,并且会自动为您的域名配置证书自动续期任务,无需手动续期。
运行结果如下:
后续操作
完成申请后请将证书配置到您的网站中,以 Nginx 为例,示例如下:
1 | server { |
完成后不要忘记重载服务哦~
现在,请尽情享受 HTTPS 带来的安全吧!
联系我们
如果您在使用过程中遇到任何问题,欢迎报告Issue,或者通过以下方式联系我们:
Issue:Report bugs to TencentCloud (DNSPod) DNS API
官方用户群:您可在 DNSPod 任一官方用户群中联系小泽
,点击加入 DNSPod 官方用户群。