标签:
.net C# 给配置文件加密--不同服务器共用同一个加密配置
保护配置提供程序
cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319
or C:\Windows\Microsoft.NET\Framework\v4.0.30319
1创建一个可导出的rsa密钥容器,命名为Key
aspnet_regiis -pc "EsdConnectionStringsKey" -exp
2在要加密的信息前面指定密钥容器,如:
<configProtectedData>
<providers>
<clear />
<add name="EsdConnectionStringsKeyProvider" type="System.Configuration.RsaProtectedConfigurationProvider, System.Configuration, Version=2.0.0.0,Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"
keyContainerName="EsdConnectionStringsKey" useMachineContainer="true"/>
</providers>
</configProtectedData>
3、通过命令行:用指定的密钥加密指定目录下的web.config文件的指定的配置节
aspnet_regiis -pef "connectionStrings" "d:/testproj/websitetest" -prov "EsdConnectionStringsKeyProvider"
对于子配置节用/分隔表示, 如identity配置节 需要写成 "system.web/identity"
4)把密钥容器导出为xml文件
aspnet_regiis -px "EsdConnectionStringsKey" "d:\key.xml" -pri
5)其它服务器导入key.xml文件
aspnet_regiis -pi "EsdConnectionStringsKey" "d:\key.xml"
异常处理:
WebConfig 加解密,未能使用提供程序“RsaProtectedConfigurationProvider"进行解密。提供程序返回错误消息为: 打不开 RSA 密钥容器。
问题:未添加用于访问 RSA 密钥容器
命令:aspnet_regiis -pa "EsdConnectionStringsKey" "NT AUTHORITY/NETWORK SERVICE"
注意事项:XP下:aspnet_regiis -pa "EsdConnectionStringsKey" "aspnet"
把密钥容器删除
aspnet_regiis -pz "EsdConnectionStringsKey"
在服务器的 C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys 目录下,找到新生成的加密文件(根据日期可以找到),
设置其对于用户network和network service的读取权限。(这里我测试时,要给是iisuser进行设置)
该权限仅在首次部署时进行设置,之后每次更新程序和重新加密均无需重复设置。
.net C# 给配置文件加密--不同服务器共用同一个加密配置
标签:
原文地址:http://www.cnblogs.com/hcrain/p/5718859.html