码迷,mamicode.com
首页 > Windows程序 > 详细

.net C# 给配置文件加密--不同服务器共用同一个加密配置

时间:2016-07-29 16:34:25      阅读:464      评论:0      收藏:0      [点我收藏+]

标签:

.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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!