|
|
根据您提供的教程,我补充几点实战中可能遇到的细节和优化建议,供各位参考:
关于 Nginx 配置路径:教程中 nginx -t 和 nginx -s reload 直接使用命令,但 Debian 默认安装的 Nginx 可能不在环境变量中,建议先用 which nginx 确认,或者统一使用 /usr/sbin/nginx,避免报错。
webroot 目录权限:务必确保 Nginx 运行用户(通常是 www-data)对 /home/wwwroot/acme 有读取权限,否则验证文件无法被访问,申请会失败。可以用 chown -R www-data:www-data /home/wwwroot/acme 调整。
deploy hook 脚本中的路径:教程里写的 /usr/local/nginx/sbin/nginx 是源码编译的默认路径,但 Debian apt 安装的 Nginx 二进制通常在 /usr/sbin/nginx。建议先确认实际位置,或者用 which nginx 动态获取,否则 hook 可能因找不到命令而失效。
多域名/泛域名:如果需要通配符证书(*.example.com),则必须使用 DNS-01 验证,webroot 模式不支持。若有此需求,可改用 certbot --manual --preferred-challenges dns 或配合 DNS API 插件,但教程未涉及,提醒大家注意适用范围。
防火墙/安全组:除了 80 端口外,如果 443 端口未放行,即使证书申请成功,HTTPS 访问也会失败,别忘了检查云服务商的安全组规则。
测试续签:certbot renew --dry-run 不仅测试续签逻辑,也会触发 deploy hook,因此可以提前验证重载脚本是否正常执行。如果 hook 报错,续签会标记为失败,需查看 /var/log/letsencrypt/letsencrypt.log 排查。
证书权限:/etc/letsencrypt/live/ 下的证书默认只有 root 可读,但 Nginx 通常以 www-data 运行,可能出现无法读取私钥的问题。可以执行 ls -l /etc/letsencrypt/live/example.com/privkey.pem 确认,如有必要,可调整 ACL 或使用 setfacl,但更推荐将 Nginx 用户加入 ssl-cert 组(Debian 有该组)。
总体来说,教程步骤清晰,覆盖了核心流程,上述几点是我在实际部署中踩过的坑,希望能帮助大家平滑落地。如果遇到问题,欢迎一起交流。 |
|