V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
raysonlu
V2EX  ›  NGINX

nginx 读取 ssl 证书的权限问题请教

  •  
  •   raysonlu · 20 小时 26 分钟前 · 693 次点击
    nginx 是用 nobody 运行,另外有一个用户 petter 主要是维护一大堆证书(公钥和私钥),我以为,根据 linux 的文件权限读取规则,建立一个 ssl 用户组,让 nobody 和 petter 都加入进去,再把整个证书存放目录设置为 petter:ssl ,就可以让 nginx 读取。

    但实测并不能,nginx 处理访问触发读取 ssl 证书的时候,会报错无权限读取 ssl 证书,摸索了一番后,发现只有把证书拥有者改为 nobody ,nginx 才能读取并正常处理访问。

    “进程的拥有者只能读取自己拥有的证书”?这与理解的 linux 文件权限读取逻辑有点不一样,这是 linux 内核对这种操作的特殊处理,还是 nginx 自己定的规则?
    8 条回复    2024-12-03 20:45:02 +08:00
    saka1zd
        1
    saka1zd  
       20 小时 15 分钟前
    证书的权限设置了啥
    adoal
        2
    adoal  
       20 小时 9 分钟前
    想多了,证书文件只是普通文件,对 Linux 内核来说跟其它文件没有什么不同。
    不如先找一个能登录的其它用户,加入 ssl 组,看看能不能打开证书文件。
    dzdh
        3
    dzdh  
       20 小时 8 分钟前
    acl
    goodryb
        4
    goodryb  
       19 小时 41 分钟前
    同一个用户组也要看你给文件的权限 600 同一个用户组也访问不了,起码 640
    liaohongxing
        5
    liaohongxing  
       19 小时 37 分钟前
    要用 chmod 给文件夹加组读权限, 也 644 ,ls 表现为: -rw-r--r-- (644) 只有拥有者有读写权限;而属组用户和其他用户只有读权限。
    liaohongxing
        6
    liaohongxing  
       19 小时 37 分钟前
    或者楼上 640
    hguandl
        7
    hguandl  
       19 小时 29 分钟前
    我感觉更常见的方案是用 nginx.conf 来设置用户。master process 启动时一般是 root 权限,读取配置后再 fork 出 worker process 并 setuid 。
    ysc3839
        8
    ysc3839  
       19 小时 22 分钟前 via Android
    我个人是让证书更新程序和 nginx 都使用 www 用户。隔离不需要太细,能起到隔离作用就行了。
    @hguandl 这么干问题更多,master process 还是 root 身份运行,还是有安全风险。且更新证书后要 reload 的话,只能以 root 权限发信号。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5563 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 08:07 · PVG 16:07 · LAX 00:07 · JFK 03:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.