加密 Web.Config
Posted
技术标签:
【中文标题】加密 Web.Config【英文标题】:Encrypting Web.Config 【发布时间】:2010-11-07 16:42:37 【问题描述】:Encrypting config files for deployment .NET 和 Encrypting config files for deployment 的副本
在 web.config 文件中加密信息的最佳方法和工具是什么?
【问题讨论】:
复制什么?像这样的 cmets 应该总是带有一个链接:) @Zeus,没错,但“相关”框中的前两个可以。 感谢所有回复。我投票结束。 【参考方案1】:以下是无需任何编程即可加密 web.config 文件的命令...
用于加密
aspnet_regiis -pef "Section" "Path exluding web.config"
用于解密
aspnet_regiis -pdf "Section" "Path exluding web.config"
通过此命令,您可以加密或解密所有部分。
【讨论】:
也不要在路径末尾添加尾随“\”。在我删除它之前它对我不起作用。 并确保以管理员权限运行。 在哪里运行此命令,当我以管理员身份启动 cmd 并运行命令时,它会显示'aspnet_regiis' is not recognized as an internal or external command, operable program or batch file.
而当我转到路径 C:\Windows\Microsoft.NET\Framework\v4.0.30319
并打开文件 aspnet_regiis.exe
时,它会自动关闭。如何运行此命令?
您可以在C:\Windows\Microsoft.NET\Framework64\v4.0.30319
找到 aspnet_regiis.exe。在 Windows 命令提示符 (cmd) 中执行 aspnet_regis.exe。你可以使用"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe" -pdf "Section" "Path exluding web.config"
【参考方案2】:
我相信有两种方法可以做到这一点:
使用 DPAPI 或 RSA 或 doing it programmatically 使用 aspnet_regiis。
编程方式很方便,特别是如果您还想加密 app.config。
根据我的使用经验,如果您编写自定义配置部分,则您已将包含该部分的类的 DLL 安装到 GAC 中。对于我正在工作的项目,我基本上编写了以下方法:
将配置 DLL 复制到 GAC。 执行加密。 从 GAC 中删除配置 DLL。如果您只是加密连接字符串,那么这可能不是问题。您还需要记住是要在计算机范围内加密还是要对特定用户帐户进行加密 - 根据您的情况,这两个选项都很有用。为简单起见,我坚持使用机器范围的加密。我提供的链接解释了这两种方法的优点。
【讨论】:
是的@Richard 让它在机器范围内变得更容易! 嗨 RichardOD,我的问题是.. 如果以编程方式进行。什么时候需要加密和解密 webconfig 文件?在此链接上查看我的帖子 --> ***.com/questions/25614737/encrypt-decrypt-web-config 这样做有什么意义?任何人都可以像我们加密它一样轻松地解密连接字符串。 @markthewizard1234 它们用于加密的密钥是特定于机器的。因此,除非您有权访问服务器,否则您将无法对其进行加密。见codeproject.com/Tips/795135/…(问答段) @markthewizard1234:任何拥有服务器管理员权限的人。【参考方案3】:你试过这个吗:http://weblogs.asp.net/scottgu/archive/2006/01/09/434893.aspx
【讨论】:
博客提到 IIS 管理器允许编辑加密部分。但是从 IIS 7 开始,这是不正确的。运行时可以解密加密的 web.config 但不能解密 IIS 管理器 感谢@irwin 非常好的资源来进一步研究这个问题。【参考方案4】:使用框架目录中的 aspnet_regiis 工具:
-- CONFIGURATION ENCRYPTION OPTIONS --
pe section Encrypt the configuration section. Optional arguments:
[-prov provider] Use this provider to encrypt.
[-app virtual-path] Encrypt at this virtual path. Virtual path must begin with a forward slash.
If it is '/', then it refers to the root of the site. If -app is not specified, the root
web.config will be encrypted.
[-site site-name-or-ID] The site of the virtual path specified in -app. If not specified, the
default web site will be used.
[-location sub-path] Location sub path.
[-pkm] Encrypt/decrypt the machine.config instead of web.config.
pd section Decrypt the configuration section. Optional arguments:
[-app virtual-path] Decrypt at this virtual path. Virtual path must begin with a forward slash.
If it is '/', then it refers to the root of the site. If -app is not specified, the root
web.config will be decrypted.
[-site site-name-or-ID] The site of the virtual path specified in -app. If not specified, the
default web site will be used.
[-location sub-path] Location sub path.
[-pkm] Encrypt/decrypt the machine.config instead of web.config.
【讨论】:
【参考方案5】:您应该从这里开始,易于理解,MSDN 中详细解释的分步指南:How To: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI
【讨论】:
【参考方案6】:使用 aspnet_regiis.exe 命令行工具
您还可以使用 aspnet_regiis.exe 命令行工具对 Web.config 文件中的部分进行加密和解密,该工具位于 %WINDOWSDIR%\Microsoft.Net\Framework\version 目录中。
看这里:http://aspnet.4guysfromrolla.com/articles/021506-1.aspx。
【讨论】:
以上是关于加密 Web.Config的主要内容,如果未能解决你的问题,请参考以下文章