手把手教你用Certbot实现阿里云SSL证书自动续期,再也不怕网站变“不安全”

你有没有遇到过这种情况:早上刚泡好咖啡,打开自己辛辛苦苦搭建的网站,突然发现浏览器地址栏旁边弹出一个大大的“不安全”警告?心里咯噔一下,赶紧检查,结果发现——SSL证书过期了!

阿里云SSL证书自动续期脚本(Certbot)

别慌,我不是来吓你的。这种事我经历过好几次,尤其是刚开始搞个人博客或者小项目的那阵子,根本记不住证书什么时候到期。直到后来,我学会了用Certbot搭配阿里云DNS来自动续期SSL证书,从此再也没为这事操过心。

今天我就把这套亲测有效的方案毫无保留地分享出来,哪怕你是Linux小白,只要照着做,也能轻松搞定SSL证书的“永不过期”模式。顺便告诉你一个小秘密:文末还有领取阿里云优惠券的专属通道,能帮你省下一笔不小的开销哦~

为什么SSL证书会过期?不能一劳永逸吗?

很多人一开始都不理解:我都花钱买证书了,为啥只能用90天?就不能一次性买个永久的吗?

其实这背后是有安全考虑的。SSL证书有效期短,是为了降低私钥泄露带来的风险。如果一张证书能用十年,一旦被黑客盗取,那他就能长期伪装成你的网站,后果不堪设想。而90天一换,就算出了问题,影响时间也有限。

Let’s Encrypt就是基于这个理念推出的免费CA机构,它提供的证书有效期正好是90天。虽然免费,但安全性完全够用,而且被主流浏览器普遍信任。配合自动续期工具Certbot,简直是个人站长和小企业的福音。

Certbot是什么?它怎么帮我自动续期?

Certbot是一个由EFF(电子前沿基金会)开发的开源工具,专门用来申请和管理Let’s Encrypt的SSL证书。它支持多种Web服务器(比如Nginx、Apache),还能通过DNS或HTTP方式验证域名所有权。

我们这里选择的是DNS-01验证方式,因为它有个巨大优势:不需要开放80端口,也不用停掉正在运行的Web服务。特别适合那些已经上线、不想被打断访问的网站。

更重要的是,阿里云提供了完整的DNS API支持,Certbot可以通过调用API自动添加和删除TXT记录,完成验证后自动签发证书。整个过程无需人工干预,定时跑一下命令就完事了。

准备工作:你需要提前准备什么?

在开始操作之前,先确认你手头有这几样东西:

  • 一台运行Linux的服务器(推荐CentOS 7+/Ubuntu 18.04+)
  • 一个已备案的域名,并且使用阿里云DNS解析(万网解析)
  • 阿里云账号,并开通了AccessKey权限
  • 基本的SSH操作能力(会敲命令就行)

如果你还没有服务器,现在上阿里云买的话,强烈建议先领取阿里云优惠券,新用户首购折扣多,老用户也有返券活动,能省下几百块不是问题。

第一步:安装Certbot和阿里云插件

登录你的服务器,先更新系统包列表:

sudo apt update && sudo apt upgrade -y   # Ubuntu/Debian
# 或者
sudo yum update -y                        # CentOS/RHEL

然后安装Certbot:

sudo apt install certbot -y   # Ubuntu
# 或者
sudo yum install certbot -y   # CentOS(可能需要EPEL源)

接下来安装阿里云DNS插件,这是实现自动验证的关键:

pip3 install certbot-dns-alidns

如果提示找不到pip3,先安装Python3和pip:

sudo apt install python3-pip -y

第二步:配置阿里云AccessKey

打开阿里云控制台,进入【访问控制RAM】→【身份管理】→【用户】,创建一个专用用户,比如叫certbot-user

给它分配一个策略:AliyunDNSFullAccess,这样它就有权限修改DNS记录了。

保存好生成的AccessKey ID和Secret,然后在服务器上创建一个安全的配置文件:

mkdir ~/.secrets
vim ~/.secrets/alidns.ini

写入以下内容:

dns_alicloud_access_key = your-access-key-id
dns_alicloud_secret_access_key = your-access-key-secret

保存后立即设置权限,防止别人偷看:

chmod 600 ~/.secrets/alidns.ini

第三步:首次申请SSL证书

一切就绪,现在可以第一次申请证书了。执行下面这行命令,把example.com换成你自己的域名:

certbot certonly 
  --dns-alidns 
  --dns-alidns-credentials ~/.secrets/alidns.ini 
  -d example.com 
  -d .example.com

这个命令的意思是:使用阿里云DNS验证方式,申请主域名和泛域名证书。Certbot会自动帮你:

  1. 生成临时TXT记录
  2. 调用阿里云API添加到DNS
  3. 等待生效并完成验证
  4. 从Let’s Encrypt获取证书
  5. 保存到本地指定目录

成功后你会看到类似这样的提示:

Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/example.com/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/example.com/privkey.pem

太棒了!你的第一个自动签发证书已经到手。

第四步:配置Nginx使用新证书

打开你的Nginx站点配置文件,找到server块,修改SSL相关配置:

server {
    listen 443 ssl http2;
    server_name example.com;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    # 其他配置...
}

重启Nginx:

sudo systemctl reload nginx

刷新网页,看看是不是绿色小锁又回来了?搞定!

第五步:设置自动续期,彻底解放双手

证书90天就过期,但我们不可能每次都手动跑一遍命令吧?当然不用。

Linux有个叫cron的定时任务工具,我们可以让它每两个月自动续一次。

编辑crontab:

crontab -e

添加一行:

0 3 1 /2  /usr/bin/certbot renew --quiet && /bin/systemctl reload nginx

这行的意思是:每个月的1号凌晨3点,尝试续期所有即将到期的证书,成功后再重载Nginx使新证书生效。

–quiet参数让它安静运行,不出错就不输出日志,避免邮件轰炸你。

怎么知道它有没有正常工作?

你可以手动模拟一次续期测试:

certbot renew --dry-run

这个命令不会真正修改任何证书,只是走一遍流程,看看会不会报错。如果显示“Cert not due for renewal yet”也没关系,说明当前证书还早,逻辑正常。

等过了60天左右,再观察日志:

journalctl -u cron | grep certbot
# 或者查看certbot自己的日志
cat /var/log/letsencrypt/letsencrypt.log

看到“Renewing an existing certificate”之类的字样,就说明一切顺利。

常见问题和避坑指南

我知道你可能会遇到这些问题,提前帮你踩过雷了:

  • ERROR: No matching credentials found —— 检查alidns.ini路径和权限,必须是600
  • DNS record not found —— 阿里云DNS有时有缓存,等几分钟再试
  • Permission denied —— 确保certbot有读取凭证文件的权限
  • 证书没更新到Nginx —— 记得在cron里加reload nginx命令

还有一个隐藏坑点:有些VPS服务商默认禁用了iptables或防火墙规则,导致DNS请求失败。如果你确定密钥没错,那就检查下服务器是否能正常访问阿里云API(如alidns.com)。

自动化才是王道

现在回头看看,整个流程其实并不复杂:

  1. 装Certbot + 阿里云插件
  2. 配AccessKey权限
  3. 一键申请证书
  4. 配置Web服务器
  5. 设置定时任务

五步走完,从此高枕无忧。再也不用担心半夜被客户打电话说“网站打不开”,也不用每年花几千块去买商业证书。

最重要的是,这套方案完全免费,稳定可靠,我已经用了一年多,一次都没翻车。

如果你正打算搭个新站,或者想优化现有架构,真心建议你现在就动手配置起来。趁着阿里云还有活动,点击这里领取专属优惠券,买服务器、CDN、域名都能抵扣,省下的钱请自己喝杯奶茶不香吗?

技术这东西,不怕不会,就怕不去试。今天你迈出一小步,明天可能就少加班好几个小时。

内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。

本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/149543.html

(0)
上一篇 1天前
下一篇 1天前
联系我们
关注微信
关注微信
分享本页
返回顶部