您如何安全地将HTTP的TLS / SSL密钥提交到源代码管理中,以便Puppet可以使用它们?您使用哪些工具和实践来加密/解密这些文件?特别是,哪些工具可以尽可能地使其易于自动化。
答案 0 :(得分:4)
不是根据个人经验说话,但据我了解,这是常见的做法
它支持使用您选择的编辑器编辑解密值,假设您可以访问私钥。
Puppet master还需要密钥访问权限,以便它可以将敏感信息转发给代理。
就安全性而言,如果主机完全受损,这会让你失去所有秘密(但实际上,如果你遇到这种情况,你必须考虑所有你的机器和他们的机器无论如何,数据也要受到损害。
答案 1 :(得分:2)
您可以将证书存储在任何SCM中,包括Git,而无需担心。在SCM中存储私钥不是最佳做法;您需要找到一种方法来限制只有那些需要访问私钥的人(并且应该是少数人)。您有两个基本选项:
它不被视为最佳做法,但您可以将私钥加密存储在PKCS-12存档中(使用只有需要访问私钥的用户才能知道的强密码进行保护),然后将其存放到存储中,如SCM或FS等。构建新服务时,构建过程的最后一步是系统管理员手动解密密钥库。
最好为新服务实例重新生成密钥,但这需要在构建完成后将新服务的CSR提交给CA.
这两种方案都需要手动完成设置过程。为了自动执行此过程,有些人在安装脚本中对PKCS-12密码进行编码 - 这不是最佳实践。
这里的Puppet插件可以帮助完成这个过程:
答案 2 :(得分:0)
私钥不适合自动分发。因为要使它们安全分发,所以必须进行高度加密,这需要手动干预才能进行解密。这确实否定了自动位。
它们也不应该存储在存储库中,因为这可能比您想象的更容易访问。如果您不小心,您的密钥可以end up on github。它可能比您想象的happens more often。