上一篇文章介绍了用 DataProtectionConfigurationProvider加密web.config文件的方法,不过他有一个缺陷,加密的文件只有在本机才能解密,如果有多台服务器的话,则需要每台机单独加密,因此不利于部署。

  而利用RSAProtectedConfigurationProvider来加密就恰好可以解决这个问题。

  本文就介绍一下如何利用RSAProtectedConfigurationProvider来部署多台服务器。

  一 创建RSA 密钥

  运行命令:aspnet_regiis -pc "LiuwuNetKeys" -exp

  二 建立虚拟目录名称为EncryptWebConfig并添加Web.config文件如下

以下为引用的内容: <configProtectedData> <providers> <add keyContainerName="LiuwuNetKeys" useMachineContainer="true" description="Liuwu.net Keys" name="LiuwuNetProvider" type="System.Configuration.RsaProtectedConfigurationProvider,System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </providers> </configProtectedData>
<connectionStrings> <add name="Conn" connectionString="Data Source=liuwu;User ID=liuwu;Password=liuwu;" /> </connectionStrings>

  主要是在config文件中加入configProtectedData配置节。

  三 加密

  运行命令aspnet_regiis -pe "connectionStrings" -app "/EncryptWebConfig" -prov "LiuwuNetProvider"

  其中/EncryptWebConfig是虚拟目录的名称,LiuwuNetProvider 是上一步ConfigProtectedData配置节中配置的名称

  加密后的连接字符串如下:

以下为引用的内容: <connectionStrings configProtectionProvider="LiuwuNetProvider"> <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>RoOicEmyEeyGt216zRdwRXVaBWB2rRn+znQN59Y9/U55dEWtYdY3/HnVzIzS/BTeJ6JMOkXWLXFSjSNrA8LY22ya65r8FBI8byOCEFJ5nd1sIpnCA4Fhm72JEKhojGXo1kMURCfSQd8BdHCAJskMrsG3/bGJconC8TyyfEXTgcM=</CipherValue> </CipherData> </EncryptedKey> </KeyInfo> <CipherData> <CipherValue>JTALo/rdj0zMzN2i0oFwP3wD6jQXijxpUjOc/5bBpOvP+dPQ2+rRDQXN5h+kzUWkB1vO4WSG9dDXif8Keud2QAJPU4eh4oc6pZ35sR6Ks/WzMqhnqPJi4GZ3yjodD+tuhgY2Cu94Q60R+IY4/DZ2iqrj4rNi51UCaFa7iF/CpOp6dMDkEu8ema0Asvfomj6R</CipherValue> </CipherData> </EncryptedData> </connectionStrings>

  四 分配权限

  此时运行程序,可能会出现以下错误:

  分析器错误消息: 未能使用提供程序“LiuwuNetProvider”进行解密。提供程序返回错误消息为: 打不开 RSA 密钥容器。

  这是因为web服务器的运行帐号没有足够的权限来访问RSA容器,因此我们需要给他分配权限,在win2003的系统中,web服务器的运行帐号是NT Authority\Network Service

  运行命令:aspnet_regiis -pa "LiuwuNetKeys" "NT Authority\Network Service"

  LiuwuNetKeys就是第一步创建的密钥名称

  到现在程序可以正常运行了。

  五 导出密钥

  运行命令:aspnet_regiis -px "LiuwuNetKeys" "d:\LiuwuNetKeys.xml" -pri

  LiuwuNetKeys 是第一步创建的密钥名称,这里将它导出为D盘的LiuwuNetKeys.xml文件

  自此本机的操作已经完成,如果要解密,可以运行 aspnet_regiis -pd "connectionStrings" -app "/EncryptWebConfig" 

  六 部署到其他机器

  在其他机器只要将加密后的Web.config文件拷贝过来,然后运行 aspnet_regiis -pi "LiuwuNetKeys" "d:\LiuwuNetKeys.xml" 就可以了,同样要记得分配权限。

  注:这里只用了虚拟目录,其实也可以使用物理路径,具体参数可以在命令行运行 aspnet_regiis 查看具体的帮助。

http://www.veryhuo.com/a/view/9886.html

RSAProtectedConfigurationProvider加密web.config的更多相关文章

  1. .net加密web.config文件

    这篇文章我将介绍如何利用ASP.NET来加密和解密Web.config中连接字符串,之前只写了第二种方式,现在将两种方式都写出来,供大家参考.不管使用哪种方式我们在程序中都不需要写任何代码来解密连接字 ...

  2. DataProtectionConfigurationProvider加密web.config文件

    web.config 文件中经常会包含一些敏感信息,最常见的就是数据库连接字符串了,为了防止该信息泄漏,最好是将相关内容加密. Aspnet_regiis.exe命令已经提供了加密配置文件的方法,系统 ...

  3. 加密web.config

    当我们要进行数据库的连接时,就会根据<%$ connectionsStrings:MyConnectionStringName %>这个表达式在Web.config文件中找到和MyConn ...

  4. 加密Web.Config配置文件

    protected void btnPassWord_Click(object sender, EventArgs e) { //加密 Configuration config = WebConfig ...

  5. 加密web.config中的邮件配置mailSettings

    加密: 在命令提示符下键入: aspnet_regiis -pef connectionStrings 要加密的web.config完整路经 演示样例:C:\Program Files (x86)\M ...

  6. 加密web.config数据库连接

    加密cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319aspnet_regiis.exe -pef "connectionStrings&q ...

  7. 加密解密技术—Web.config加密和解密

    阅读目录 一:我们为什么要对web.config配置文件中的配置节加密? 二:怎么样加密和解密? 三:实例 四:运行效果 一:我们为什么要对web.config配置文件中的配置节加密? 因为在我们的项 ...

  8. 对web.config加密,和解密码详细说明

    可以使用受保护配置来加密 Web 应用程序配置文件(如 Web.config 文件)中的敏感信息(包括用户名和密码.数据库连接字符串和加密密钥).对配置信息进行加密后,即使攻击者获取了对配置文件的访问 ...

  9. web.config 加密/解密 正确版

    一般加密方式: 利用Aspnet_regiis: cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis -pe "co ...

随机推荐

  1. Java如何判断线程池所有任务是否执行完毕

    import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Tes ...

  2. 手Q游戏中心上线 完美释放娱乐基因

        今年A股市场上手游概念股的表现可谓“独当一面”,不少和手游沾边的公司股价都翻了倍.在笔者看来,这些手游企业的股价明显高得离谱,这轮行情可以证明资本市场对手游的关注度非常高,但并不意味着这些手游 ...

  3. Linux设备模型(总结)

    转:http://www.360doc.com/content/11/1219/16/1299815_173418267.shtml 看了一段时间的驱动编程,从LDD3的hello wrod到后来的字 ...

  4. Java之——redis并发读写锁,使用Redisson实现分布式锁

    原文:http://blog.csdn.net/l1028386804/article/details/73523810 1. 可重入锁(Reentrant Lock) Redisson的分布式可重入 ...

  5. Nokitjs 系列-01 - HelloWorld

    一.前言 本篇文章需要读者有一点 Node.js 基础的了解,并且已经安装了 Node.js (node.npm),但并不需要有 Nokit 的知识,本文将简单介绍 Nokitjs 的安装使用,并编写 ...

  6. [转]SSIS高级转换任务—在Package中是用临时表是需要设置RetainSameConnection属性

    本文转自:http://www.cnblogs.com/tylerdonet/archive/2011/05/20/2052306.html 在上一个导入列这个例子中我们创建一个实际的表来存储文件路径 ...

  7. PhpStorm 对 AngularJS 的支持

    非常喜爱用AngularJS来构建web应用程序的前端吗? PhpStorm 使得在其上进行 AngularJS 相关的工作同其它得到IDE支持的编程语言的工作一样容易! AD:51CTO首届中国AP ...

  8. AWR报告简易分析

    Snap Id Snap Time Sessions Cursors/Session Begin Snap: 35669 2012-11-8 13:00 1246 11.3 End Snap: 356 ...

  9. [Python爬虫] 之十二:Selenium +phantomjs抓取中的url编码问题

    最近在抓取活动树网站 (http://www.huodongshu.com/html/find.html) 上数据时发现,在用搜索框输入中文后,点击搜索,phantomjs抓取数据怎么也抓取不到,但是 ...

  10. Spring 自定义配置类bean

    <!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.bea ...