我的 VPS 上有一个 SSL 私钥,它被多个应用程序(Apache、Postfix 等)使用。问题是,我无法将权限精确设置为 0600(-rw-------
),因为这些不同的应用程序以不同的用户身份运行(www-data、vmail 等)。奇怪的是,Apache 能够以某种方式读取它,但每当我尝试通过 SSL 端口 465 发送邮件时,Postfix 就会崩溃,我发现这是由于密钥的权限问题。
是否有关于如何处理此问题的安全约定?我是否只需复制此 SSL 密钥并将其放在不同位置,然后将其分配给需要使用它的每个用户/组?
答案1
处理这个问题的方法很少。首先我需要指出的是,只有other
访问通常被所有需要读取密钥的程序禁止 - 换句话说,像640
( rw-r-----
) 这样的权限通常是可以的。
考虑到这一点,以下是一些方法:
让证书完全归某个程序所有,例如 apache:
www-data
:www-data
,并赋予其权限640
。让其他需要读取证书的程序成为www-data
组成员。这可能是最方便但最不安全的方法,因为它可能会向原本没有该权限的进程开放不必要的权限。使证书归 apache 所有,但在 vmail 组中,:
www-data
:vmail
和权限640
。这样,apache 可以作为所有者读取它,而 vmail 可以作为组成员读取它。这更安全一些,但不能扩展到 2 个程序之外。编写一个脚本,将原始证书复制到几个目标证书中,并为每个证书适当更改权限。这种方法可能是最安全的,并且扩展性很好,但会创建副本。而且,您不能创建硬链接,因为所有硬链接文件都共享所有者和权限。