我正在开发一个客户端服务器应用程序,需要在发送到客户端之前使用私钥对某些文件进行签名。然后,客户端将使用公钥验证签名。因此,私钥需要始终位于服务器上并且可由服务器应用程序读取。
问题是我想知道在哪里存储我的私钥,这样在服务器受到威胁时更安全,不会被泄露。
我应该将其存储在数据库中还是应该将其存储为文件并使用文件权限来控制?
Thanks.
选项是使用以不同用户身份运行的 setuid 二进制文件来进行证书签名。
其他用户将具有对该密钥的读取访问权限,但“普通”应用程序服务器用户不会具有读取访问权限。因此,如果有人破坏了应用程序服务器的帐户,他们只能签署任意证书,而无法窃取 CA 私钥。
另一种可能性是使用某种 RPC 机制将签名请求传递给以另一个用户身份运行的另一个进程(可能在另一个主机上)。或同一主机上的另一个虚拟机(但不是inside应用程序服务器计算机)。
这些方法中的任何一种都只是减少了妥协的影响,但它仍然很糟糕。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)