在这项工作中,我们正在开发一个用于概念验证的ASP.NET MVC应用程序。应用程序执行的某些操作需要传输凭据,因此我们将这些信用存储在web.config的加密部分中。我们遇到的困难是,当一个开发人员加密数据并提交数据时,下一个更新本地副本并尝试使用该web.config的开发人员会获得异常,因为他们的计算机无法解密配置以供使用。
我们该如何处理?
答案 0 :(得分:1)
过去,我已经将machine.config用于敏感凭证,即连接字符串等。它位于C:\ Windows \ Microsoft.Net \ Framework \ V4.0.30319 \ Config
这将允许您完全省略提交中的凭据。只需确保每个开发人员和/或服务器都有自己的machine.config以及所需的凭据设置。
答案 1 :(得分:1)
我假设你使用aspnet_regiis.exe来加密该部分。如果是这种情况,您遇到问题的原因是用于加密/解密的密钥在计算机上是不同的。
您可以在所有计算机上使用相同的密钥,从配置角度来看,这类似于服务器场设置,因此您可以使用此SO question中的信息。
或者,因为有一个固有的假设,即开发人员可以访问凭据,然后将其解密,直到将应用程序部署到生产服务器,然后加密该部分。当在web.config中将用户名/密码指定为数据库连接的连接字符串的一部分时,这是一种常见的解决方案,连接将在加密之前更新以反映生产数据库服务器作为部署过程的一部分。 / p>
答案 2 :(得分:0)
首先,不确定在DevOps最佳实践中还有其他更好的方法来处理密钥机密时,为什么选择此选项。那似乎是经典方式。在调试期间,任何开发人员都可以窥视实际值或吐出日志吗?
无论如何,如果您将整个交付生命周期作为解决此问题的背景,那么在这里我可能会做些什么来实现您试图保护密钥机密的事情:
希望这至少对您的设计方法有所帮助。