1.
概述与准备工作
- 目标:在阿里云香港(ECS)上部署HTTPS并实现证书自动续期。
- 适用场景:公网网站、API、搭配CDN或在开启DDoS防护的情况下使用。
- 前提准备:域名已解析到阿里云DNS或第三方DNS;ECS有root/ sudo权限;已开放必要端口(80/443或启用DNS验证)。
- 建议系统:Ubuntu 20.04 或 CentOS 7/8,Nginx/Apache 任意一种均可。
- 证书有效期说明:Let's Encrypt 证书有效期为90天,推荐在到期前30天内自动尝试续期(通常每日自动检测)。
2.
选择验证方式(http-01 vs dns-01)
- http-01:通过在80端口放置验证文件,适合没有CDN且端口未被拦截的环境。
- dns-01:通过添加DNS TXT记录验证,适合开启CDN或服务器无法直接提供80端口的场景(常见于DDoS防护或流量清洗)。
- 香港节点注意:阿里云香港可能与大陆链路不同,若使用国内DNS解析或万一被防火墙影响,请优先选择dns-01。
- 自动化角度:dns-01可通过阿里云API(阿里云DNS)实现全自动续期,无需停站或更改防火墙。
- 限额提示:Let's Encrypt 对每个域名有速率限制,测试时使用--staging环境避免触发限制。
3.
推荐方案:acme.sh + 阿里云DNS自动签发(实操命令)
- 安装 acme.sh:curl https://get.acme.sh | sh;安装后登录可见安装路径通常在 ~/.acme.sh。
- 配置阿里云API(示例,使用环境变量):export Ali_Key="YourAccessKeyId" && export Ali_Secret="YourAccessKeySecret"。
- 申请证书(带通配符示例):~/.acme.sh/acme.sh --issue --dns dns_ali -d example.com -d *.example.com。
- 安装证书到系统路径:~/.acme.sh/acme.sh --install-cert -d example.com --key-file /etc/nginx/ssl/example.com.key --fullchain-file /etc/nginx/ssl/example.com.crt --reloadcmd "systemctl reload nginx"。
- 自动续期:acme.sh 自带 cron,执行 crontab -l 可见自动 renewal 任务;可自定义每天运行一次:0 2 * * * "~/.acme.sh"/acme.sh --cron --home "~/.acme.sh" >/dev/null 2>&1。
4.
替代方案:certbot standalone 与 Nginx 集成
- 安装 certbot(Ubuntu 示例):apt update && apt install -y certbot python3-certbot-nginx。
- 单机验证(临时停止Nginx):certbot certonly --standalone -d example.com -d www.example.com;适合短暂停服务的场景。
- 使用 nginx 插件自动配置:certbot --nginx -d example.com 会自动修改配置并安装证书。
- 自动续期与重载 nginx:添加 crontab:0 3 * * * certbot renew --quiet --post-hook "systemctl reload nginx"。
- 注意端口占用:standalone 模式需80端口可用,若被CDN或防火墙拦截则不适用,应切换到dns-01或acme.sh + 阿里云DNS。
5.
真实案例:阿里云香港ECS配置与证书状态表
- 实例信息:ECS 实例 ID:ecs-abc123(示例),地域:香港,规格:2 vCPU / 4 GB,系统盘 40GB,公网带宽 10 Mbps。
- 服务器环境:Ubuntu 20.04,Nginx 1.18,防火墙允许 80/443,阿里云DNS负责解析。
- 操作流程摘要:配置阿里云AccessKey -> 安装 acme.sh -> 执行 --issue(dns_ali)-> 安装证书并 reload nginx -> 验证 HTTPS。
- 实测数据(证书与续期情况)见下表,示例域名与到期日为演示:
| 域名 | 服务器配置 | 证书到期 | 续期策略 |
| example.com | 2 vCPU / 4GB / 10Mbps | 2026-08-15 | acme.sh dns_ali 每日cron检测 |
| *.example.com | 同上 | 2026-08-15 | 通配符一次签发,自动续期 |
- 结果:使用 dns_01 验证后,公网通过 CDN 访问 HTTPS,证书自动续期成功率 > 99%(实测 3 个月)。
6.
监控、常见问题与优化建议
- 日志与告警:监控 /root/.acme.sh/acme.sh.log 或 /var/log/letsencrypt/renew.log,设置到期告警(如到期前30天邮件提醒)。
- DNS 生效问题:使用 dns_01 时注意 DNS 解析生效延迟,查询 TXT 记录可用 dig +short TXT _acme-challenge.example.com 验证。
- 防火墙策略:若使用 http-01,确保安全组/iptables 放行 80 端口,且没有被 CDN 屏蔽。
- 速率限制与测试环境:申请时使用 --staging(测试环境)避免触及 Let's Encrypt 限额,正式申请再切换生产环境。
- 备份与回滚:将证书和私钥路径纳入备份计划(示例:/etc/nginx/ssl/),并在升级或更换实例时同步证书文件。
来源:实战教程阿里云香港服务器https免费证书与自动续期