在 centos 上哪里/如何存储我的 Web 服务器的私钥?

在 centos 上哪里/如何存储我的 Web 服务器的私钥?

我必须配置多个网络服务器以使用 HTTPS,我不会考虑任何“高安全性”,但我想至少涵盖基本的安全最佳实践。

我想知道我应该将 Web 服务器支持 HTTPS 所需的私钥存储在哪里,以及我应该如何处理对它的访问?据我所知,对于不需要高安全性的 Web 服务器来说,使私钥无密码并依赖于文件权限是标准做法。但是,对于任何 Web 服务器来说,最有可能受到攻击的角度是服务器本身存在漏洞,导致任何获得该盒子访问权限的人都已经拥有对我的密钥的读取权限。有什么简单的方法可以最大限度地减少这种威胁吗?

我也不确定根据 centos 惯例应该将密钥保存在哪里。看起来我应该将密钥放在 /etc/pki 中,但我不确定私钥/公钥通常存储在该目录中的什么位置,我不明白它的目录布局。我读过关于私钥存储在 /etc/pki/private 中的文章,但默认情况下它并不存在,这让我怀疑惯例是创建目录还是将密钥存储在其他地方。更重要的是,我读到的内容还说 /etc/pki/private 只能由 root 读取,但我的 Web 服务器不会以 root 身份运行,因此我需要将私钥存储在其他地方,或者也向我的 Web 服务器开放对 /etc/pki/private 的访问权限。

答案1

您的 Web 服务器的主进程通常以 root 身份运行,包括读取 SSL 私钥,因此将其放在只有 root 可以读取的地方就足够了。如果您的服务器受到攻击,您无论如何都要重新密钥化您的 SSL 证书,而且您面临的问题比 MITMing 更大。

位置完全无关紧要(只要上述权限到位),因此请将其放在您认为合适的任何位置。可能不是,但我个人更喜欢放置在 Web 服务器的配置目录中名为或 的/tmp文件夹。keysssl/etc

答案2

在 CentOS 的现代版本中,私钥的正常目录是/etc/pki/tls/private/,除 root 之外的任何人都不应拥有该目录的任何权限。相应的公钥应存储在 中/etc/pki/tls/certs

如果您愿意,启用 SELinux、AppArmor 或其他 MAC(强制访问控制)应该有助于防止任何网络漏洞访问您的私钥。

当然,没有什么可以阻止您将它们存储在其他地方,但是如果您使用 MAC ACL,则需要手动设置 MAC ACL。

相关内容