我有一个MVC2 .NET 4.0应用程序,托管在TFS 2008上(很快将是TFS 2010),它使用web.config
中的连接字符串连接到另一台服务器上的数据库。我需要加密这些连接字符串。
据我了解,我可以使用aspnet_regiis.exe
来加密web.config
文件的连接字符串部分,但我必须在部署计算机上进行加密,因为加密使用机器名生成加密密钥。
现在,在我看来,这代表了一个问题 - 每次我将代码部署到开发服务器时都不会覆盖web.config文件,需要重新加密吗?这种手动过程似乎很糟糕。
我对部署后需要重新加密的理解是否正确?
如果是这样,有没有办法自动化这个过程?我不想忘记这一点,也不想让一个新的团队成员不了解这个过程,并将连接线暴露给世界。
答案 0 :(得分:0)
web.config文件通常不是部署的一部分(尽管Visual Studio 2010在Web应用程序部署项目中支持configuration file transforms)。我不希望你在部署时覆盖web.config(因为web.config是你放置那些特定于那台机器/环境的东西的地方。
所以,加密一次,然后不要覆盖它,这将是我的建议。
由于在您的情况下不可用,因此可以在加密时指定密钥,以便您可以在计算机之间共享加密文件。默认情况下,加密命令使用DPAPI加密部分(与计算机绑定),但您也可以使用RSA进行加密。有关详细信息,请访问Specifying a Protected Configuration Provider中的MSDN。