推荐在 /etc/nginx/ssl/ 下按域名建立独立子目录管理证书与私钥,统一根目录符合 FHS 标准,权限严格控制(私钥 600、属主 root),配置中使用绝对路径引用 fullchain.pem 和 privkey.key,禁止软链与相对路径。

推荐在 /etc/nginx/ssl/ 下按域名建立独立子目录,实现证书与私钥的集中、隔离、可维护管理。
统一根目录:/etc/nginx/ssl/
这是最被广泛采用且符合 Linux 文件系统层次标准(FHS)的做法。Nginx 主配置通常以 root 权限运行,该路径天然具备安全性与可读性,避免使用 /tmp、/home 或网站根目录等易暴露或权限混乱的位置。
- 执行创建命令:
sudo mkdir -p /etc/nginx/ssl - 确保父目录权限合理(如
755),不开放写入给非 root 用户
按域名分目录:清晰隔离,一目了然
每个域名独占一个子目录,例如 /etc/nginx/ssl/example.com/,避免多站点证书混放导致误配或覆盖。
- 目录内只存放本域名必需文件:
fullchain.pem(含域名证书+中间证书)、privkey.key - 不保留单独的
ca-bundle.crt或chain.pem—— 中间证书应合并进fullchain.pem,减少引用错误 - 命名保持一致(如固定用
fullchain.pem和privkey.key),便于自动化脚本识别
权限控制:私钥必须严格受限
私钥是核心敏感资产,任何额外读取权限都可能造成 HTTPS 身份冒用。
- 设置私钥权限为
600:sudo chmod 600 /etc/nginx/ssl/example.com/privkey.key - 确认属主为
root:sudo chown root:root /etc/nginx/ssl/example.com/privkey.key - 检查结果应为:
-rw------- 1 root root ... privkey.key - 证书文件(
fullchain.pem)权限可设为644,但不建议放宽至组/其他可写
配置中引用:用绝对路径,禁用软链和硬编码
Nginx 配置必须显式写明完整路径,不依赖当前工作目录,也不通过符号链接间接指向,防止权限绕过或路径解析歧义。
- 正确示例:
ssl_certificate /etc/nginx/ssl/example.com/fullchain.pem; - 错误做法:使用相对路径(如
./certs/fullchain.pem)、软链接(/etc/nginx/ssl/current → example.com)、或把证书内容直接嵌入配置文件 - 多个域名共用同一份证书?仍建议各自建目录并复制文件,而非共享路径——便于后续独立更新与审计


















