
站是立起来了,浏览器地址栏却挂着“不安全”三个字,访客看着就慌。HTTPS 这道门锁今天必须装上,而且成本是零——Let's Encrypt 作为非营利证书机构,给全球超过七亿个网站免费发证书, Certbot 则是官方推荐的申请工具。证书有效期 90 天,但 Certbot 装好后会自动续期,装一次基本不用再管。
申请方式推荐 webroot 模式: Certbot 往网站目录里放一个验证文件,运行中的 Nginx 正常把它吐出去完成域名所有权验证,全程不停机。比 standalone 模式(临时占用 80 端口、要先停 Nginx)体面得多。前提是域名解析已生效——上一篇文章讲的 dig 验证先过一遍,解析不通申请必败。
# 安装(Debian/Ubuntu)
apt install -y certbot python3-certbot-nginx
# webroot 方式申请证书
certbot certonly --webroot -w /var/www/example.com \
-d example.com -d www.example.com \
--email you@example.com --agree-tos
# 证书产出位置
# /etc/letsencrypt/live/example.com/fullchain.pem
# /etc/letsencrypt/live/example.com/privkey.pem
证书到手只是半成品,还要在 Nginx 里挂上并强制跳转。443 的 server 块加载证书文件,80 的块做 301 跳转,两段配置分工明确。别手写跳转规则抄错方向——http 跳 https 是单向的,反向配置会造成重定向循环,这类故障在服务器排查合集的重定向循环篇里有详细分析。
server {
listen 443 ssl;
server_name example.com;
root /var/www/example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
# nginx -t && systemctl reload nginx
# 验证续期定时任务存在(安装时自动配置)
certbot renew --dry-run
systemctl list-timers | grep certbot
验证收尾三件事:浏览器访问 http:// 版本确认 301 跳到 https 且挂锁出现;certbot renew --dry-run 演练一次续期流程,输出 Congratulations 即续期链路健康;systemctl list-timers 确认续期定时器在跑。进阶动向提一嘴:Let's Encrypt 从 2026 年起开放了 6 天超短期证书和 IP 地址证书,Certbot 5.3 以上用 --preferred-profile shortlived 参数就能申请,IP 证书对内网穿透、没有域名的临时服务是刚需——不过短期证书续期压力大,普通网站用标准 90 天证书加自动续期就是最优解,新东西知道有这回事即可。
相关阅读:HTTPS 是上线的必经一步。《从零建站第一步:技术栈选型总纲,别一上来就纠结框架》的上线组里,本篇排在首站部署之后,总纲建议收藏,照着动线一站一站走。
A5创业网 版权所有