使用acme.sh更新阿里云DCDN证书
0. 前言
0.1. 需求与思路
DCDN 需要一份 SSL 证书,但是阿里云内贩卖的证书过于昂贵,无疑增加了我们的成本。
acme.sh 可以自动获取证书,有效期 90 天,尽管免费了,但是每隔 90 天我们就要上传一次证书,如果忘记了,网站就会显示证书过期。
因此我们期望可以将这个过程自动化,使用 acme.sh 获取证书,然后通过某种方式上传证书。
经过搜索,发现阿里云 CLI 可以做到最后一步。所以整个思路就很清晰了:
- 使用 acme.sh 获取证书
- 使用阿里云 CLI 上传证书
0.2. 准备工作
首先,想要运行 acme.sh,我们需要一台服务器。其次,acme.sh 申请证书需要进行 DNS Challenge,这个过程想要自动化则我们还需要阿里云的 API 密钥,API 密钥归属于 RAM 用户,因此我们还要申请一个 RAM 用户。注:本文中 DNS 是由阿里云托管。
综上,我们需要:
- 一台服务器
- 阿里云的 API 密钥
- acme.sh
- 阿里云 CLI
下面的步骤将会介绍这个过程
1. 获取阿里云 API 密钥
1.1. 打开 RAM 控制台并创建 RAM 用户
首先,找到阿里云的 RAM 控制台。

选择左侧用户,点击创建用户,输入一个登录名称,并选中 OpenAPI 调用访问。

点击确定,并进行一次安全验证(若有的话)。在下个页面,记住 AccessKeyID 和 AccessKeySecret,如果怕忘记,可以下载 CSV 文件。注意,信息只会显示一次,所以一定要记住。

1.2. 为刚刚的用户添加权限
选中刚刚创建的用户,点击下方的添加权限,添加以下权限
- AliyunDNSFullAccess 这个权限是为了更新 DNS 记录,目的是给 acme.sh 提供 DNS 记录更新的权限
- AliyunDCDNFullAccess 这个权限是为了更新 DCDN 证书,目的是给程序与脚本提供 DCDN 证书更新的权限
最后点击下方确定

2. 安装 Aliyun CLI
2.1. 下载安装包
来到服务器上,首先我们要下载 Aliyun CLI 安装包:
1 | |
Aliyun CLI 是阿里云提供的命令行工具,可以通过命令行管理阿里云资源。
2.2. 解压安装包
1 | |
2.3. 安装
1 | |
将文件移动到 bin 中变为全局变量
2.4. 配置
输入以下命令配置:
1 | |
按照提示输入 AccessKeyID 和 AccessKeySecret,默认地区可以cn-hangzhou,完成配置。
3. 编辑上传证书脚本
在你喜欢的地方创建一个脚本,比如/path/to/reloadcmd.sh,内容如下:
注:第 3-5 行请改为自己的配置
1 | |
这个脚本将通过 Aliyun CLI 将证书上传到阿里云 DCDN 服务。记得使用以下命令给脚本添加执行权限:
1 | |
4. 申请证书
4.1. 安装 acme.sh
使用以下命令安装 acme.sh:
1 | |
4.2. 导出阿里云 API 密钥
使用以下命令导出阿里云 API 密钥:
1 | |
4.3. 申请一份证书
使用以下命令申请一份证书:
1 | |
4.4. 安装证书并配置自动更新
使用以下命令安装证书:
注:这里的/path/to/fullchain.cer和/path/to/keyfile.key是你的证书的路径,/path/to/reloadcmd.sh是你刚刚创建的脚本的路径。
1 | |
这里的安装证书其实是指将证书导出到一个合理的地方,方便将证书上传到阿里云 DCDN 服务。
以上步骤,我们就完成了当 acme.sh 发现证书需要更新时,acme.sh 将会自动更新证书,并执行我们上面创建的脚本,将证书传入 DCDN。