zoukankan      html  css  js  c++  java
  • RSAProtectedConfigurationProvider加密web.config

    上一篇文章介绍了用 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 AuthorityNetwork Service

      运行命令:aspnet_regiis -pa "LiuwuNetKeys" "NT AuthorityNetwork 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

  • 相关阅读:
    Java-抽象类第一篇认识抽象类
    Java-JVM第一篇认识JVM
    ECharts-第一篇最简单的应用
    Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点。
    Oracle 中利用闪回查询确定某表在某时间点之后的修改内容并恢复至该时间点
    Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点
    Oracle 存储过程中的临时表数据自动清空
    oracle闪回,找回已提交修改的记录
    java使字符串的数字加一
    MyEclipse 选中属性或方法后 相同的不变色了?
  • 原文地址:https://www.cnblogs.com/chen110xi/p/4963083.html
Copyright © 2011-2022 走看看