Nginx 配置 SSL 证书出现 Permission denied 权限报错完整排坑记录

一、问题现象

/etc/nginx/ssl/ 目录手动上传域名 SSL 证书,配置 Nginx HTTPS 反向代理后,执行配置校验命令:

nginx -T | grep -E 'ssl_certificate|ssl_certificate_key'

终端抛出致命错误:

[emerg] cannot load certificate "/etc/nginx/ssl/fangkuai/fangkuai.cloud_bundle.crt": BIO_new_file() failed (SSL: error:system lib;Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed

报错核心含义:Nginx 进程无读取证书文件的权限,配置校验直接失败,无法重载 Nginx。

补充说明:

当前 Nginx 已经在运行,临时访问网站 HTTPS 暂时正常;但一旦服务器重启、手动重载 Nginx、更新配置,服务会直接宕机,博客、监控面板全部无法访问,属于隐藏高危问题,必须修复。

二、问题根源

  • 证书文件上传后默认权限过窄,Nginx 工作进程无法读取.crt证书文件;

  • 证书目录、文件归属不是 root 用户,系统拒绝 Nginx 读取文件。

三、完整修复步骤

1. 批量修正证书目录与文件权限

# 1. 给ssl根目录开放全局读权限
sudo chmod -R 755 /etc/nginx/ssl

# 2. 证书公钥文件设置标准读取权限
sudo chmod -R 644 /etc/nginx/ssl/fangkuai/*.crt

# 3. 私钥文件收紧权限,仅root可读(安全规范)
sudo chmod -R 600 /etc/nginx/ssl/fangkuai/*.key

# 4. 修改目录&文件归属为root用户
sudo chown -R root:root /etc/nginx/ssl

2. 校验 Nginx 配置是否修复成功

sudo nginx -t

输出以下内容,此代表权限问题彻底解决:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

3. 平滑重载 Nginx,加载新证书配置

sudo nginx -s reload

出现 notice 日志即重载完成,不中断现有网站访问:

2026/06/25 14:36:58 [notice] signal process started

4. 验证文件权限是否符合规范

ls -l /etc/nginx/ssl/fangkuai/fangkuai.cloud_bundle.crt

正常输出示例:

-rw-r--r-- 1 root root 7074 Jun 24 23:23 /etc/nginx/ssl/fangkuai/fangkuai.cloud_bundle.crt
  • 权限644:所有用户可读,满足 Nginx 读取需求;

  • 属主属组root:root:符合 Linux 系统服务安全标准。

四、HTTPS 有效性验证

ICP还在审批,无法验证,等后续进行补充。