c# – 在生产配置中处理密码进行自动部署

我在这里看到相关的问题,但似乎并没有正确地回答我所需要的.

我们使用Powershell脚本来部署我们的应用程序,并且大多数环境(UAT等)的配置文件中的密码信息都是纯文本.这不是一个大问题,但是当涉及到PREPROD和PROD时,这是一个大问题.所以我们在配置中有一些标记,如“{{promt-password}}”,它将给出登录对话框(Get-Credential),进行部署的人员可以输入凭据并继续部署.

但这并不能帮助自动部署(例如通过TeamCity等工具进行一键式部署)

我应该去非对称加密(http://msdn.microsoft.com/en-us/library/as0w18af.aspx),其中使用公钥加密密码,在配置中输入,并且私钥在“代理”中存储(如这里所描述的那样)http://msdn.microsoft.com/en-us/library/tswxhw92.aspx)(如在TeamCity将触发的VM中)部署和访问受限)运行自动化部署,它可以解密密码?密码学和sttuf不是很强,但这听起来像是要走的路吗?任何其他建议?人们如何处理这种自动化部署?

更新:

好的,我已经开始实施了.我在C#中编写了一个使用Crypography库的控制台应用程序.该应用程序生成键:

RSACryptoServiceProvider rsa = GetRsa(containerName);
File.WriteAllText("keys.kez",rsa.ToXmlString(true));

我也找出了公钥:

File.WriteAllText("public.pke", rsa.ToXmlString(false));

给任何加密密码并要求他们在配置中输入密码的人公开密钥.将keys.kez文件放在必须运行部署的任何代理中.

最佳答案
从安全和简单的角度来看,非对称加密绝对是赢家.我以这种方式部署了生产的SaaS应用程序非常成功.

有一些技巧.一个,如你所说,确保公钥/私钥对安装在主机上,不存储在配置文件或代码中.二,假设MS提供的管理和密钥生成工具很弱,可怕,并相应地进行规划(我们为部署过程中的操作创建了一个简单的keygen exe).

转载注明原文:c# – 在生产配置中处理密码进行自动部署 - 代码日志