指定受保护的配置提供程序
更新:2007 年 11 月
可以使用 ProtectedConfigurationProvider 类对 Web.config 文件的各个部分进行加密和解密。下面的列表描述了 .NET Framework 中的受保护配置提供程序:
DpapiProtectedConfigurationProvider。使用 Windows 数据保护 API (DPAPI) 对数据进行加密和解密。
RsaProtectedConfigurationProvider。使用 RSA 加密算法对数据进行加密和解密。
这两种提供程序都可以对数据进行强加密。但是,如果计划在多台服务器(Web 场)上使用相同的加密配置文件,则只有通过 RsaProtectedConfigurationProvider 才能导出加密密钥,并将其导入其他服务器。
通过 .NET Framework,也可以自行定义受保护配置提供程序。有关详细信息,请参见实现受保护配置提供程序。
配置受保护配置提供程序
既可以自行指定受保护配置提供程序,也可以使用内置于 ASP.NET 的提供程序之一。默认情况下,Machine.config 文件指定了下列受保护配置提供程序:
名为 RsaProtectedConfigurationProvider 的 RsaProtectedConfigurationProvider 实例。该提供程序配置为默认提供程序。
名为 DataProtectionConfigurationProvider 的 DpapiProtectedConfigurationProvider 实例。
在配置文件的 configProtectedData 节中指定受保护配置提供程序。如果要使用自定义设置指定自己的提供程序,可以使用 providers 元素的 add 元素声明新的提供程序实例。可以使用 configProtectedData 元素的 defaultProvider 属性将该提供程序实例标识为默认的提供程序。
下面的示例使用名称 SampleProvider 配置 RsaProtectedConfigurationProvider 实例,并将其设置为默认的提供程序。
<configuration>
<configProtectedData defaultProvider="SampleProvider">
<providers>
<add name="SampleProvider"
type="System.Configuration.RsaProtectedConfigurationProvider,
System.Configuration, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a,
processorArchitecture=MSIL"
keyContainerName="SampleKeys"
useMachineContainer="true" />
</providers>
</configProtectedData>
</configuration>
加密配置节时,使用受保护配置提供程序的名称。有关更多信息,请参见 加密和解密配置节。
受保护配置提供程序选项
在配置文件中,每个受保护配置提供程序都公开了可以使用该提供程序的声明属性设置的选项。所有的提供程序都需要提供程序实例的 type 和 description 属性,以及 keyName。除此之外,这些选项对于每种提供程序类型都是唯一的。
下表描述了 RsaProtectedConfigurationProvider 的配置选项。
Attribute |
说明 |
---|---|
type |
受保护配置提供程序的类型。下面的示例演示 RsaProtectedConfigurationProvider 的类型定义:
|
description |
提供程序实例的说明。 |
keyContainerName |
用于加密或解密 Web.config 文件内容的 RSA 密钥容器的名称。
说明:
ASP.NET 进程必须拥有对指定 RSA 密钥容器的读取访问权限。通过 -pa 开关,可以使用 Aspnet_regiis.exe 工具授予访问 RSA 密钥容器的权限。有关更多信息,请参见 导入和导出受保护的配置 RSA 密钥容器。
|
useMachineContainer |
如果 RSA 密钥容器是计算机级密钥容器,则为 true;如果 RSA 密钥容器是用户级密钥容器,则为 false。有关更多信息,请参见 使用受保护的配置加密配置信息。 |
useOAEP |
如果加密和解密时使用最优非对称加密填充 (OAEP),则为 true;否则为 false。有关更多信息,请参见 RSAOAEPKeyExchangeFormatter 属性。 |
cspProviderName |
Windows 密码 API (crypto API) 密码服务提供程序 (CSP) 的名称。有关更多信息,请参见 ProviderName。 |
下表描述了 DpapiProtectedConfigurationProvider 的配置选项。
Attribute |
说明 |
---|---|
type |
受保护配置提供程序的类型。下面的示例演示 DpapiProtectedConfigurationProvider 的类型定义:
|
description |
提供程序实例的说明。 |
keyEntropy |
应用程序特定的值,将该值包含在加密密钥中可以防止其他应用程序对加密信息进行解密。有关更多信息,请参考 Windows 数据保护 API (DPAPI) 的 CryptProtectData 方法中的 OptionalEntropy 参数。 |
useMachineProtection |
如果为 true,则使用计算机特定的保护;如果为 false,则使用用户帐户特定的保护。如果为 true,计算机上运行的任何进程都不会保护数据。因此,建议您使用访问控制列表 (ACL) 对加密数据的访问进行限制。有关更多信息,请参见 Windows 数据保护 API (DPAPI) 中 CryptProtectData 方法的 dwFlags 参数的 CRYPTPROTECT_LOCAL_MACHINE 值。 |