XuLaLa.Tech

首页客户端下载Windows 使用V2Ray 教程SSR 教程Clash 教程

阿里云服务器如何使用Certbot申请免费HTTPS证书及自动续期?

2025.04.08

最近阿里云域名SSL免费证书开始收费了,这无疑增加了独立站站长的成本,如果不想交每年大概68元的费用就得使用免费的证书,这里主要Let’s Encrypt申请免费证书方案,这个方案应该是当前最可行的方案了。

使用Let’s Encrypt申请免费证书有两种方式,第一种Certbot 和NGINX集成,第二种自动续费脚本,本文主要是介绍第二种方案。

续期

Certbot 是使用的Let’s Encrypt申请的免费证书,只有 3 个月的有效期,到期之后我们需要再次续期才能继续使用 HTTPS 协议。

一、手动续期

你需要自己记录证书到期的时间,在证书到期之前,从新生成一个新的证书

certbot certonly -d *.替换自己的域名.com --manual --preferred-challenges dns

然后根据步骤三中的 DNS TXT 解析 步骤再配置一次即可,证书保存位置没有变化的话,NGNIX 不需要更新配置。

二、自动续期

每次都手动配置 DNS 解析挺麻烦的,而且还容易遗忘,更新不及时容易造成服务崩坏。

certbot 提供了一个 hook,可以编写一个 Shell 脚本,在需要续期的时候让脚本调用 DNS 服务商的 API 接口动态添加 TXT 记录,验证完成后再删除此记录,达到自动续期的效果。

我使用的是阿里云服务,找到 justjavac 大神写好的脚本:
GitHub 项目 certbot-dns-aliyun
项目地址: https://github.com/justjavac/certbot-dns-aliyun

配置阿里云key和secret

基于上面的脚本,需要配置阿里云凭证信息
点击阿里云头像 ——》 控制访问 ——》AccessKey管理

创建完成后,在用户界面能看到 用户对应的AccessKey ID和AccessKey Secret了(注意,记得保存这两个值,界面更新AccessKey Secret会消失)

这里也可以创建一个单独的用户给这个用户添加上DNS管理的权限。

具体配置步骤

进入阿里云主机控制台

1) 安装 aliyun cli 工具
wget https://aliyuncli.alicdn.com/aliyun-cli-linux-latest-amd64.tgz
tar xzvf aliyun-cli-linux-latest-amd64.tgz
sudo cp aliyun /usr/local/bin
rm aliyun
2) 将拥有 DNS 权限的角色配置到云服务器中
cd aliyun /usr/local/bin
aliyun configure --profile akProfile

配置会进入交互式内容,如下输入完成配置:

Configuring profile 'akProfile' in '' authenticate mode...
Access Key Id []: 在这里输入刚新建角色的 Access Key 然后回车进入下一项
Access Key Secret []: 在这里输入刚新建角色的 Access Key Secret 然后回车进入下一项
Default Region Id []: cn-hangzhou
Default Output Format [json]: json (Only support json))
Default Language [zh|en] en:
Saving profile[akProfile] ...Done.

出现如下界面,配置完成:

3) 安装 certbot-dns-aliyun 插件
wget http://cdn.jsdelivr.net/gh/justjavac/certbot-dns-aliyun@main/alidns.sh
sudo cp alidns.sh /usr/local/bin
sudo chmod +x /usr/local/bin/alidns.sh
sudo ln -s /usr/local/bin/alidns.sh /usr/local/bin/alidns
rm alidns.sh
4) 测试是否能正确申请
certbot certonly -d *.替换自己的域名.com --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --dry-run

正式申请时去掉 –dry-run 参数:

certbot certonly -d *.example.com --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean"

证书续期

certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --dry-run
```shell
自动续期,添加定时任务 crontab。
```shell
crontab -e

输入

1 1 */1 * *  certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --deploy-hook "nginx -s reload"
© 2010-2022 XuLaLa 保留所有权利 本站由 WordPress 强力驱动
请求次数:69 次,加载用时:0.665 秒,内存占用:32.19 MB