在共享主机上加密 web.config
Posted
技术标签:
【中文标题】在共享主机上加密 web.config【英文标题】:Encrypting web.config on shared hosting 【发布时间】:2010-11-23 20:42:51 【问题描述】:我想在共享主机环境中加密 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 工具作为共享托管环境运行。
有人对我如何加密连接字符串有任何想法吗?
【问题讨论】:
【参考方案1】:您只需要使 web.config 可写。共享主机要么为 IIS 用户提供完全访问权限,要么为您提供一些基于 Web 的工具,可能在您的文件管理器中,以编辑权限。您不需要运行 aspnet_regiis。
【讨论】:
【参考方案2】:我没有看到任何东西被标记为答案,所以我假设你没有得到解决方案。 只是一个想法 - 但如果唯一的问题是 您的应用程序 没有对您的配置文件的写入权限(提示:您的 FTP 帐户有写入权限!) - 只需编写一个读取连接字符串的 ASPX 页面设置,并显示加密的 Xml(您可能希望将其放在受密码保护的位置)。
那么你所要做的就是:
-
创建未加密的 web.config
上传
访问您的“显示加密的连接字符串网页”
将加密数据复制并粘贴到您的本地 web.config 中
使用新的加密设置再次上传 web.config!
【讨论】:
【参考方案3】:必须生成加密密钥并将其保存在应用程序的文件夹中。每次读取配置文件或配置部分时,网站都会使用该密钥对配置文件或配置部分进行加密和解密。默认提供程序是 RSACriptoServiceProvider。如果配置文件是加密上传的,但没有提供加密密钥,它本身就无法解密它。每次解密和加密配置部分时都会使用密钥
【讨论】:
【参考方案4】:aspnet_regiis 工具用于通过 -pef 和 -pdf 选项进行加密和解密。相同的工具用于使用 -pc 选项创建加密密钥,该选项在机器级别创建密钥对
【讨论】:
以上是关于在共享主机上加密 web.config的主要内容,如果未能解决你的问题,请参考以下文章
将 laravel 应用程序部署到共享主机并得到“未指定应用程序加密密钥”。错误
部署在生产共享 IIS 主机中的 React 应用程序的 .woff、.woff2 和 .ttf 字体出现 404 错误