成功让域名 abc.com 支持 HTTPS 所用的方法和步骤,按逻辑顺序整理,方便复盘或操作记录。
目标
- 让
abc.com能通过 HTTPS 安全访问 - 使用免费的 Let’s Encrypt 证书
- 支持自动续期
1️⃣ 确认系统环境
- 系统:Alibaba Cloud Linux 3(基于 RHEL/CentOS)
- 已备案域名
- 已配置域名解析到服务器公网 IP
- HTTP 可以访问服务器(或临时开启 80 端口用于验证)
注意:Snap 在此系统不可用,使用系统自带的 EPEL 或 Certbot 官方二进制。
2️⃣ 安装 Certbot
方法 A:使用系统仓库(推荐)
sudo yum install certbot python3-certbot-nginx -y
- 不需要额外安装
epel-release,使用系统自带的阿里云 EPEL 仓库即可
方法 B:使用 Certbot 官方二进制(备用)
wget https://dl.eff.org/certbot-auto
chmod +x certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot
3️⃣ 申请 Let’s Encrypt 证书
- 如果已有 HTTP 配置,可以直接使用:
sudo certbot certonly --webroot -w /usr/share/nginx/html -d abc.com -d www.abc.com
- Certbot 会生成证书,默认路径:
/etc/letsencrypt/live/abc.com/fullchain.pem
/etc/letsencrypt/live/abc.com/privkey.pem
- 注意:自动安装失败时,证书仍已生成,可以手动配置 Nginx。
4️⃣ 配置 Nginx 使用 HTTPS
编辑 Nginx 配置文件(例如 /etc/nginx/conf.d/default.conf):
方法 :使用 vi(Linux 通用)
sudo vi /etc/nginx/conf.d/default.conf
-
进入
vi后:- 按
i进入 编辑模式 - 修改配置(详见下方👇)
- 修改完按
Esc,输入:wq保存并退出
- 按
# HTTP 自动跳转到 HTTPS
server {
listen 80;
server_name abc.com www.abc.com;
return 301 https://$host$request_uri;
}
# HTTPS 配置
server {
listen 443 ssl;
server_name abc.com www.abc.com;
ssl_certificate /etc/letsencrypt/live/abc.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/abc.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
live/...路径默认指向最新证书,无需使用archive/...路径。
5️⃣ 检查并重启 Nginx
sudo nginx -t # 检查配置是否正确
sudo systemctl restart nginx
- 浏览器访问
https://abc.com,确认安全锁显示
6️⃣ 配置自动续期
sudo certbot renew --dry-run
- 输出成功说明自动续期可用
- 系统默认会定期自动续期,
live/...会自动更新到最新证书
7️⃣ 关键点总结
- Certbot 自动安装失败不影响使用 → 手动配置 Nginx 即可
- 确保证书域名与
server_name完全匹配 live/...是默认路径,符号链接自动指向最新证书- 临时 HTTP 配置可用于证书验证
- HTTPS 配置完成后,HTTP 可自动跳转到 HTTPS
- 自动续期测试通过即可,无需手动修改 Nginx
✅ 最终结果:
- 域名
abc.com支持 HTTPS - 使用 Let’s Encrypt 免费证书
- Nginx 配置正确,浏览器显示安全锁
- 自动续期机制到位,保证证书长期有效
流程图或操作步骤表格