在 Linux 服务器上将 openssl 私钥存储在哪里?

在 Linux 服务器上将 openssl 私钥存储在哪里?

我的 VPS 上有一个 SSL 私钥,它被多个应用程序(Apache、Postfix 等)使用。问题是,我无法将权限精确设置为 0600(-rw-------),因为这些不同的应用程序以不同的用户身份运行(www-data、vmail 等)。奇怪的是,Apache 能够以某种方式读取它,但每当我尝试通过 SSL 端口 465 发送邮件时,Postfix 就会崩溃,我发现这是由于密钥的权限问题。

是否有关于如何处理此问题的安全约定?我是否只需复制此 SSL 密钥并将其放在不同位置,然后将其分配给需要使用它的每个用户/组?

答案1

处理这个问题的方法很少。首先我需要指出的是,只有other访问通常被所有需要读取密钥的程序禁止 - 换句话说,像640( rw-r-----) 这样的权限通常是可以的。

考虑到这一点,以下是一些方法:

  1. 让证书完全归某个程序所有,例如 apache: www-data: www-data,并赋予其权限640。让其他需要读取证书的程序成为www-data组成员。这可能是最方便但最不安全的方法,因为它可能会向原本没有该权限的进程开放不必要的权限。

  2. 使证书归 apache 所有,但在 vmail 组中,: www-data:vmail和权限640。这样,apache 可以作为所有者读取它,而 vmail 可以作为组成员读取它。这更安全一些,但不能扩展到 2 个程序之外。

  3. 编写一个脚本,将原始证书复制到几个目标证书中,并为每个证书适当更改权限。这种方法可能是最安全的,并且扩展性很好,但会创建副本。而且,您不能创建硬链接,因为所有硬链接文件都共享所有者和权限。

相关内容