写段小程序,为自己的配置加个密
配置文件,这个再平常不过了。不管你用的服务器,还是开发时用到的各种开发工具,还有我们自己开发的网站/软件,配置文件都是很重要的。今天说的就是.net环境下的配置问题。
先来段程序,以connectionString为例:
web.config中初始的配置:
<connectionStrings> <add name="TestConnStr" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Readers;Persist Security Info=True;User ID=test;Password=123456" providerName="System.Data.SqlClient" /> </connectionStrings>
加密代码:
Configuration config = WebConfigurationManager.OpenWebConfiguration("~"); ConnectionStringsSection section = config.ConnectionStrings; if (!section.SectionInformation.IsProtected && !section.SectionInformation.IsLocked) { section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider"); config.Save(ConfigurationSaveMode.Full, false); }
看一下加密的结果:
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider"> <EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" /> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#"> <EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" /> <KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"> <KeyName>Rsa Key</KeyName> </KeyInfo> <CipherData> <CipherValue>Y1QD6G00t8+X3Igfth3ElX3eA/zVxVOEnQjiFLH6l7c3LQWIRe9hZV4J77QfN+7T9pzcMgaIDm8Ck5C5R9FsDaV5AzfdfT3SluDib9exZhOoZUY3IQq+S8sxf0SjzFZLw4lgfG/DPkvo6KkMAYgl/J4lsXeAg16Q0XViiOTqcI0=</CipherValue> </CipherData> </EncryptedKey> </KeyInfo> <CipherData> <CipherValue>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</CipherValue> </CipherData> </EncryptedData> </connectionStrings>
这样的代码,估计没几个人能看懂吧,哈哈。我们的程序还可以原始的方式调用,解密过程.net在你取值时自动完成。
注意:如果在vs是运行,要以管理员身份运行vs;如果在IIS中,IIS的用户一定要获得配置文件的改写权限。
下面看一个加密的代码:
Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
OpenWebConfiguration方法,它有个6个重载的方法,上面用的是最简单的一个,就是打开当前网站根目录下的配置文件,下面看一下最复杂的一个:
public static Configuration OpenWebConfiguration( string path, string site, string locationSubPath, string server, string userName, string password )
参数:
- path
- 类型:System.String
配置文件的虚拟路径。
- site
- 类型:System.String
显示在 Internet 信息服务 (IIS) 配置中的应用程序网站的名称。
- locationSubPath
- 类型:System.String
配置应用的特定资源。
- server
- 类型:System.String
Web 应用程序所在的服务器的网络名称。
- userName
- 类型:System.String
打开文件时要使用的用户全名 (Domain\User)。
- password
- 类型:System.String
用户名的密码。
返回值
类型:System.Configuration.Configuration
一个 Configuration 对象。
我们可以看到这个方法提供了一上相当强大的功能,它能让你打开远程服务器的某个配置文件。打开之后我们就可以对任何的配置节进行修改、加密等的操作,真是一个强大的功能。
然后下一句
ConnectionStringsSection section = config.ConnectionStrings;
获取你要操作的配置节,这里获取ConnectionStrings的配置。
然后
if (!section.SectionInformation.IsProtected && !section.SectionInformation.IsLocked)
我们判断这个配置节是不是已经加密并且是不是已经锁定。
然后
section.SectionInformation.ProtectSection("RsaProtectedConfigurationProvider");
这一句完成加密,看一下ProtectSection方法:
public void ProtectSection( string protectionProvider )
参数
- protectionProvider
- 类型:System.String
要使用的保护提供程序的名称。
.net提供两种保护提供程序:
DPAPIProtectedConfigurationProvider:使用 Windows 数据保护 API (DPAPI) 对数据进行加密和解密,使用的是内建到window的保护机制,用的是机器特定的密钥加密,优点是不用自己维护管理密钥,缺点就是不能在多个机器上使用同一个密钥配置。
RSAProtectedConfigurationProvider:使用 RSA 加密算法对数据进行加密和解密。
关于rsa密钥的问题,在machine.config中我们可以找到这段:
<configProtectedData defaultProvider="RsaProtectedConfigurationProvider">
<providers>
<add name="RsaProtectedConfigurationProvider" type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" description="Uses RsaCryptoServiceProvider to encrypt and decrypt" keyContainerName="NetFrameworkConfigurationKey" cspProviderName="" useMachineContainer="true" useOAEP="false"/>
<add name="DataProtectionConfigurationProvider" type="System.Configuration.DpapiProtectedConfigurationProvider,System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" description="Uses CryptProtectData and CryptUnProtectData Windows APIs to encrypt and decrypt" useMachineProtection="true" keyEntropy=""/>
</providers>
</configProtectedData>
默认使用的 RSA 密钥容器名为 "NetFrameworkConfigurationKey"。
创建和导出 RSA 密钥容器,请参考:http://msdn.microsoft.com/zh-cn/library/2w117ede(v=vs.100).aspx
如果计划在多台服务器(Web 场)上使用相同的加密配置文件,则只有通过 RsaProtectedConfigurationProvider 才能导出加密密钥,并将其导入其他服务器。
当然我们还可以通过继承 System.Configuration.ProtectedConfigurationProvider 抽象类来实现自己的加密程序。
注意:如果使用 Nothing 参数或空字符串调用 ProtectSection 方法,则 RSAProtectedConfigurationProvider 类将用作保护提供程序。
最后,保存。
config.Save(ConfigurationSaveMode.Full, false);
.net提供三个重载的save方法,最复杂的一个是:
public void Save( ConfigurationSaveMode saveMode, bool forceSaveAll )
参数:
- saveMode
- 类型:System.Configuration.ConfigurationSaveMode
一个 ConfigurationSaveMode 值,该值用于确定要保存的属性值。 - 有三个值:
- Full : 将所有属性都写出到配置文件。这在创建信息配置文件时或将配置值从一台计算机移动到另一台计算机时最有用。
- Minimal:仅将不同于继承值的属性写出到配置文件。
- Modified:仅将修改的属性写出到配置文件,即使值和继承值相同。
- forceSaveAll
- 类型:System.Boolean
如果在未修改配置的情况下保存配置,则为 true;否则,为 false。
另外还提供一个SaveAs的方法,可以让我们把配置节中的配置写入到指定的配置文件中。
OK,通过这些节配置的api我们完全可以把配置的管理自动化、简易化,提高我们的效率。
还有更值得注意的问题是配置节的修改会导致创建新的应用程序域,去应用新配置,新的请求就要等到应用程序域创建完毕,并且请求页面重新编译为本机代码之后才会得到处理,更糟糕的是,application和cache的信息将丢失,如果使用的是进程内会话提供程序,session也将丢失。因此,我们不应该把经常变化的值保存到web.config这样的配置文件中,并且尽量避免修改这些配置文件。