Nginx配置SSL私钥需用绝对路径指定ssl_certificate_key,私钥须为无密码PEM格式、权限600且父目录700,所有者root:root,并与证书公钥匹配。

在 Nginx 中配置 SSL 私钥文件路径,关键是在 server 块中使用 ssl_certificate_key 指令,并确保路径、权限和格式都符合要求。
必须用绝对路径指定私钥位置
不能写相对路径(如 cert/private.key)或符号链接——Nginx 启动或重载时可能因权限或解析问题加载失败。正确写法是:
ssl_certificate_key /etc/nginx/ssl/example.com.key;- 常见安全存放位置还有
/etc/ssl/private/example.com.key或/var/www/ssl/example.com.key
私钥文件不能带密码保护
Nginx 无法交互式输入密码,若私钥被加密(比如用 openssl rsa -aes256 -in key.pem -out key-decrypted.pem 加过密),会导致服务启动或 reload 失败。必须提供未加密的 PEM 格式私钥:
- 检查方式:
head -n 1 example.com.key应显示-----BEGIN RSA PRIVATE KEY-----或-----BEGIN PRIVATE KEY----- - 如已加密,用
openssl rsa -in encrypted.key -out decrypted.key解密(需输入原密码)
严格限制私钥及父目录权限
私钥文件本身和它所在的整个路径都不能被非 root 用户读取:
- 私钥文件权限设为
600:chmod 600 /etc/nginx/ssl/example.com.key - 父目录(如
/etc/nginx/ssl/)权限设为700:chmod 700 /etc/nginx/ssl/ - 所有者建议为
root:root,尤其当 Nginx 主进程以 root 运行时
确认证书与私钥匹配
虽然不直接涉及路径配置,但路径对了不代表能用。可快速验证是否配对:
- 提取证书公钥:
openssl x509 -in example.com.crt -pubkey -noout | sha256sum - 提取私钥对应公钥:
openssl rsa -in example.com.key -pubout 2>/dev/null | sha256sum - 两个 SHA256 值一致,说明匹配;不一致则 HTTPS 会报错或握手失败


















