加密共享主机上的web.config

时间:2009-08-28 20:20:11

标签: .net asp.net encryption configuration web-config

我想在共享托管环境中加密web.config文件中的连接字符串。

我已经阅读了MSDN上关于这个主题的大部分文章(http://msdn.microsoft.com/en-us/library/53tyfkaw.aspx),并得出结论,我需要使用RSAProtectedConfigurationProvider,以便我可以将带有密钥容器的配置文件导出到我们的共享主机提供商。但是,当我这样做时,我收到错误“无法打开RSA密钥容器。”我认为这是因为我需要将访问aspnet帐户的权限授予密钥容器,但这是使用aspnet_regiis工具完成的,我无法使用该工具,因为我在共享主机上。

所以我尝试在global.asax中的应用程序启动时以编程方式加密它,但在保存文件时出现权限错误 - “加载配置文件时出错:访问路径'C:\ Inetpub \ xxx \ yyy \ 3acp98k.tmp'被拒绝。我认为共享主机限制。

我无法将aspnet_regiis工具作为共享托管环境运行。

有没有人对如何加密连接字符串有任何想法?

4 个答案:

答案 0 :(得分:1)

你只需要使web.config可写。共享主机要么完全访问IIS用户,要么在文件管理器中为您提供一些基于Web的工具来编辑权限。您不需要运行aspnet_regiis。

答案 1 :(得分:1)

我看到没有任何标记为答案所以我会假设你没有得到解决方案。 只是一个想法 - 但如果唯一的问题是您的应用程序没有对您的配置文件的写访问权限(提示:您的FTP帐户具有写权限!) - 只需编写一个读取连接字符串的ASPX页面设置,并显示加密的Xml(您可能希望将其放在受密码保护的位置)。

然后你所要做的就是:

  1. 创建未加密的web.config
  2. 上传
  3. 访问“显示加密的连接字符串网页”
  4. 将加密数据复制并粘贴到您的本地web.config
  5. 使用新的加密设置再次上传web.config!

答案 2 :(得分:0)

必须生成加密密钥并将其保存在应用程序的文件夹中。每次读取时,网站都使用该密钥来加密和解密配置文件或配置部分。默认提供程序是RSACriptoServiceProvider。如果配置文件是加密上传的,但没有提供加密密钥,它就不能自行解除它。每次配置部分被解密和加密时都会使用密钥

答案 3 :(得分:0)

aspnet_regiis工具用于使用-pef和-pdf选项进行加密和解密。使用相同的工具创建带有-pc选项的加密密钥,该选项在机器级别创建密钥对