免费SSL证书颁发

Hexo 博客升级 HTTPS(CentOS 7 + Nginx + Let’s Encrypt)

本文记录将 Hexo 静态博客从 HTTP 升级到 HTTPS 的完整过程,包括证书申请、Nginx 配置与自动续期。


一、环境信息

  • 系统:CentOS 7
  • Web 服务:Nginx
  • 博客框架:Hexo(静态生成)
  • 域名:<YOUR_DOMAIN>
  • 部署目录:/opt/blog/public
  • 服务器:阿里云 ECS

二、前置准备

1. 开放 HTTPS 端口

在云服务器安全组中放行:

协议 端口 来源
TCP 443 0.0.0.0/0

2. 确认 Nginx 正常运行

1
systemctl status nginx

测试 HTTP:

1
curl -I http://127.0.0.1

3. 确认域名解析正常

1
nslookup <YOUR_DOMAIN>

确保解析结果指向当前服务器公网 IP。


三、安装 Certbot(SSL 工具)

1. 安装 EPEL 源

1
yum install -y epel-release

2. 安装 Certbot + Nginx 插件

1
yum install -y certbot python2-certbot-nginx

四、申请 HTTPS 证书(单域名)

执行:

1
certbot --nginx -d <YOUR_DOMAIN>

1. 输入邮箱

用于:

  • 证书到期提醒
  • 安全通知

2. 同意协议

输入:

1
yes

3. 是否订阅邮件

可选:

1
yes / no

五、Certbot 自动配置内容

成功后会自动完成:

1. 生成证书文件

路径:

1
/etc/letsencrypt/live/<YOUR_DOMAIN>/

包含:

  • fullchain.pem
  • privkey.pem

2. 自动修改 Nginx 配置

自动添加:

1
2
3
4
listen 443 ssl;

ssl_certificate /etc/letsencrypt/live/<YOUR_DOMAIN>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<YOUR_DOMAIN>/privkey.pem;

3. HTTP 自动跳转 HTTPS

1
return 301 https://$host$request_uri;

六、验证 HTTPS 是否成功

1. 浏览器访问

1
https://<YOUR_DOMAIN>

出现 🔒 表示成功


2. 命令验证

1
curl -I https://<YOUR_DOMAIN>

返回:

1
HTTP/1.1 200 OK

七、自动续期配置(关键)

Let’s Encrypt 证书有效期 90 天,必须自动续期。


1. 测试续期

1
certbot renew --dry-run

2. 配置 crontab 定时任务

编辑:

1
crontab -e

添加:

1
0 3 * * * /usr/bin/certbot renew --quiet

3. 验证任务

1
crontab -l

八、常见问题

1. HTTPS 无法访问

检查:

  • 云服务器是否开放 443
  • Nginx 是否监听 443

2. 证书未生效

1
2
nginx -t
systemctl reload nginx

3. 域名解析异常

1
nslookup <YOUR_DOMAIN>

4. crontab 报错(bad minute)

原因:

  • cron 格式错误
  • 空格或字符异常

正确格式:

1
分钟 小时 日 月 星期 命令

九、完整流程总结

域名解析 → 安全组放行 443 → 安装 certbot → 申请证书 →
Nginx 自动配置 → HTTPS 生效 → 配置自动续期


十、扩展优化(建议)

  • CDN 加速(Cloudflare)
  • Git 自动部署 Hexo
  • HSTS 强制 HTTPS
  • 自动备份 public 目录

备注

本文 <YOUR_DOMAIN> 已脱敏,请替换为实际域名使用。



免费SSL证书颁发
https://blog.sh462li.top/2026/05/22/免费SLL证书颁发/
作者
SHAO
发布于
2026年5月22日
许可协议