我们公司的安全小组讨论了下列pipe理SSL私钥有什么不好的地方。
Web服务器需要访问encryption操作的私钥。 应该保护这个文件免受未经授权的访问。 同时,服务器应该自动启动,无需人工干预(如果足够安全的话)。
我们正在讨论三个选项:
用文件系统权限保护密钥。
使用密码保护密钥并在每次重新启动时手动input密钥。
使用密码保护密钥并将密钥存储在文件系统中以自动重新启动。
我们的关注点如下:
使用选项1,重新启动是自动的,但是一个妥协可以复制私钥,并且可以用来解密通信或模拟我们的服务器。
选项2似乎更安全,但需要人为干预,系统pipe理员担心如果发生在非工作时间。 此外,密码应与几个系统pipe理员共享,你知道一个共享的秘密不再是一个秘密。
选项3有两个以前的选项中最好的,但如果有人可以访问密钥也可以访问密码:(所以它似乎并不太安全。
你如何pipe理你的服务器私钥的安全? 有没有其他(更安全)的选项?
选项1是我认为可接受的标准。
然而,如果你真的想要额外的安全性,为什么你没有一个安全的服务器(不是在你的DMZ)设置监控你的networking服务器,如果Apache下山,它可以自动远程login,并重新启动Apache ,提供密码。
所以密码保存在计算机上,但不是和apache一样运行,而不是在DMZ中运行。 您获得使用密码的附加安全性,并保持自动重新启动的能力。
如果某人有足够的权限访问服务器来读取密钥,那么他们很可能也有足够的权限来连接debugging器并从内存中获取密钥。
除非您真的喜欢半夜醒来input密码,否则请select1.如果您有多台服务器,则希望在故障时自动重新启动,而选项2则不允许这样做。
一种比1更高的安全性但是比2更less的停机时间的可能性是创build具有短有效性的私钥并定期回收它们。 这样你可以存储他们没有密码,但减less了漏洞的窗口。
如您所知,选项3不提供超过1的额外安全性。
实用性表明,在几乎所有的情况下,你将最终使用选项(1)。 文件系统权限是大多数安全性和实际情况下最好的方式。
在一个* nix系统上,你可以把私钥只限制在根目录下,因为大多数好的web服务器(比如apache)将以root用户身份启动,但是一旦他们拥有他们需要的特权端口,他们的priv就会降级为受限用户(80,443等) 。
正如你所提到的选项(3)是从安全angular度来看与选项(1)相同。