2011-12-06 170 views
3

我有一些麻烦加密配置部分。我们用一个包从外部供应商,并在web.config中通过以下方式结构:加密自定义配置设置

的web.config

<appSettings file="customSettings.config"> 
    <add key="generic_setting" value="true"/> 
    <add key="another_generic_setting" value="false"/> 
</appSettings> 

customSettings.config

<appSettings> 
    <add key="company_db_username" value="sa"/> 
    <add key="company_db_password" value="secret"/> 
</appSettings> 

我们使用WiX创建一个安装包(msi),以便我们可以在我们的组织中部署这个包。我们执行的一个自定义操作是appSettings部分的加密。在上面描述的情况下,不幸的是只加密web.config文件中的部分并且不改变customSettings.config。

我注意到configSource属性的加密比文件属性好一些,但它不支持从两个文件合并元素。现在我可以以编程方式将customSettings.config的元素合并到web.config中,然后加密自定义操作中的所有内容,但我想知道是否有更清晰的解决方案。

+0

我没有看到比我在自己的问题中提到的解决方案更好的解决方案,所以我决定继续这样做。 – basvo

回答

1

根据您的示例,您正在加密的信息是数据库用户名和密码,另一种方法是使用Windows身份验证第一次连接到您的数据库。初始用户的权限非常有限。

使用该连接来获取先前使用项目级数据库加密存储的高权限帐户(请参阅OPEN SYMMETRIC KEY和ENCRYPTBYKEY)的凭证/连接字符串。

+0

在我的示例中,我确实使用数据库凭据,但也有其他应用程序设置需要加密。不过,你的回答是一个好方法。谢谢。 – basvo