您的位置:首页 > 运维架构 > 网站架构

加密网站配置文件中的信息

2007-04-06 01:55 447 查看

加密网站配置文件中的信息

2006年2月12日 21:31 - (阅读:5432;评论:9)

加密网站中的配置信息,我们不需要写任何代码,也不需要修改任何代码,只需要使用 aspnet_regiis 工具修改配置文件即可.
比如我们有下面一个配置文件需要加密:
<configuration>
  <connectionStrings>
    <add name="SqlServices" connectionString="Data Source=localhost;
Integrated Security=SSPI;Initial Catalog=Northwind;" />
  </connectionStrings>
</configuration>

假设这个配置文件在 MyApplication 目录下。
加密命令
aspnet_regiis -pe "connectionStrings" -app "/MyApplication"

aspnet_regiis 命令在你安装的 .net Framework 目录下, 默认在:
C:/WINDOWS/Microsoft.Net/Framework/v2.0.*

加密后的效果:
<configuration>
  <connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
    <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>0RU0XfRexc6aLFYZM+f+IWZVINqTZAAunysoVPv0dliPM72D
34MJ/gX7pzvhSJNqCLiXeyjsayse
12oAuF4rlIEraa/RHiqDKjqyJtRrRCiqnwqt5PET5LM9Q0aiT20Kpb2G2hn/0QB
7vKcWydboTdbwmUa7fXaQJhMcKaVI0mc=</CipherValue>
          </CipherData>
        </EncryptedKey>
      </KeyInfo>
      <CipherData>        <CipherValue>BPws3LIOuXhD0qDlfRMWDy9Xwn1jPHnMosKuVn3JVPW
KmD2h7hJo2BeTIjyIOAq/2J1saLDJm
JfgG85BEKfVUuNbMRg6czcgXHyOKeAHZgHzdw+d
zA8qEF/t7wITzuIQEslGK2WlUXNDFg4ZfsYDivmxy6xQh3Fvw4JOCHzLXg/
ZJrjYcHIk3I27oh/XuxtSQ0VNOl
gfSsM/MTGwB4tloELcRJ6Jm5u0dJA2fvmjpdc=
</CipherValue>
      </CipherData>
    </EncryptedData>
  </connectionStrings>
</configuration>

注意:为了避免一行太长,我这里把加密后信息加了几个回车符。

ASP.NET 在处理 Web.config 文件时会自动对该文件的内容进行解密。因此,
不需要任何附加步骤即可对已加密的配置设置进行解密,供其他 ASP.NET 功能使用或用于访问代码中的值。

如果你想修改这些配置信息,就需要解密这个文件,然后再加密。解密用  aspnet_regiis.exe 命令的 -pd 选项。
参考命令如下:

aspnet_regiis -pd "connectionStrings" -app "/MyApplication"

上面给的范例是 针对 IIS 的站点,如果你的站点是使用VS2005 的 ASP.net Development Server
则需要用 -pef 参数,当然 iis 站点也可以这么用

aspnet_regiis.exe     -pef "connectionStrings"     "D:/My2005Codes/WebTestCode/TestWEBSite"

说明:
-pef  对指定物理(非虚拟)目录中的 Web.config 文件的指定配置节进行加密。
对应的这个解密则是
-pdf 参数  对指定物理(非虚拟)目录中的 Web.config 文件的指定配置节进行解密。

参考资料:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet4.asp

反馈

# re: 加密网站配置文件中的信息

2006-2-12 22:15 by sunmast
蝈蝈刷屏.. ban了...

# re: 加密网站配置文件中的信息

2006-2-12 22:17 by sunmast
蝈蝈刷屏.. ban了...

# re: 加密网站配置文件中的信息

2006-2-13 10:56 by 游客
请问 .net 1.1 没有-pe这个命令吗?

# re: 加密网站配置文件中的信息

2006-2-14 13:30 by Ricky
不错的办法。
不过,可否选择加密的密钥呢?否则任何一个人只要再用ASPNET_RegIIS就能解密。

# re: 加密网站配置文件中的信息

2006-2-16 9:09 by HD
可以不用密钥解密的加密,要来何用?

# re: 加密网站配置文件中的信息

2006-2-20 10:24 by YellowWee
他的密钥是放在服务器上的。

可以使用aspnet_regiis -pc "myKey" -pku 创建密钥;
aspnet_regiis -px "myKey" -pku 导出密钥;
aspnet_regiis -px "myKey" -pku 导入密钥;

# re: 加密网站配置文件中的信息

2006-2-20 10:25 by YellowWee
写错了

aspnet_regiis -pi "myKey" -pku 导入密钥;

# re: 加密网站配置文件中的信息

2006-2-20 10:29 by YellowWee
再次更正一下,创建密钥必须要使用aspnet_regiis -pc "myKey" -exp 这样才能被 -px参数导出。

-exp Specifies that private keys must be able to be exported.

# re: 加密网站配置文件中的信息

2006-2-28 23:36 by 笑容
不导入和导出密钥 直接复制到新服务器,那么加密的 config 是不是就不能用了
如果能用那么就失去加密的意义了
如果是虚拟主机 密钥肯定不会让你随便导来导去的

# 回复: 加密网站配置文件中的信息

2006-12-29 8:56 by 我考百试通
再次更正一下,创建密钥必须要使用aspnet_regiis -pc "myKey" -exp 这样才能被 -px参数导出。

-exp Specifies that private keys must be able to be exported.

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息