1. 安装必要软件
Ubuntu/Debian 系统:
bash
sudo apt update
sudo apt install certbot python3-certbot-nginxCentOS/RHEL/Rocky Linux 系统:
bash
sudo yum install epel-release
sudo yum install certbot python3-certbot-nginx2. 配置 Nginx(确保域名已指向服务器)
确保你的 Nginx 配置中有正确的 server_name 指令:
nginx
server {
listen 80;
server_name example.com www.example.com;
# 其他配置...
}3. 申请证书(三种方法)
方法一:自动配置(推荐)
bash
sudo certbot --nginx -d www.example.comCertbot 会自动:
获取证书
修改 Nginx 配置启用 HTTPS
设置自动重定向 HTTP → HTTPS
方法二:仅获取证书(不修改配置)
bash
sudo certbot certonly --nginx -d example.com -d www.example.com方法三:交互式申请
bash
sudo certbot --nginx按照提示操作即可。
4. 验证证书状态
bash
# 查看证书列表
sudo certbot certificates
# 检查证书详细信息
sudo openssl x509 -in /etc/letsencrypt/live/example.com/fullchain.pem -text -noout5. 测试 HTTPS 访问
访问 https://example.com,确认:
证书有效(没有安全警告)
网站正常加载
6. 自动续期设置
测试续期(不真正执行):
bash
sudo certbot renew --dry-run自动续期配置:
证书自动续期已通过 systemd timer 或 cron 自动设置,通常位于:
bash
# 查看定时任务
systemctl list-timers | grep certbot
# 或
cat /etc/cron.d/certbot7. 手动续期证书
bash
sudo certbot renew8. 常用命令
bash
# 查看帮助
certbot --help
# 查看 certbot-nginx 插件帮助
certbot --help nginx
# 撤销证书
sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem
# 删除证书(删除配置)
sudo certbot delete --cert-name example.com9. 证书文件位置
证书通常保存在:
text
/etc/letsencrypt/live/example.com/
├── cert.pem # 证书
├── chain.pem # 中间证书
├── fullchain.pem # 完整证书链
└── privkey.pem # 私钥(非常重要!)10. 强制 HTTPS 配置示例
Certbot 会自动修改 Nginx 配置,通常会产生类似这样的配置:
nginx
server {
listen 80;
server_name example.com www.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
# 其他配置...
}注意事项
确保 80/443 端口开放:
bash
sudo ufw allow 80/tcp sudo ufw allow 443/tcp域名解析必须正确:域名必须指向当前服务器的公网 IP
首次申请可能有限制:Let's Encrypt 有速率限制(每周 50 个证书/域名)
备份私钥:定期备份
/etc/letsencrypt/目录多域名证书:可以一次性申请包含多个域名的证书:
bash
sudo certbot --nginx -d example.com -d www.example.com -d api.example.com
这样你就成功为 Nginx 配置了 Let's Encrypt SSL 证书,并且会自动续期,无需手动管理证书过期问题。