Decrypting ConnectionString

本文关键字:ConnectionString Decrypting | 更新日期: 2023-09-27 18:12:22

我一直在阅读有关网络某些部分的加密和解密的内容。配置c#/ASP应用程序,我成功地加密了web的连接字符串。配置我的应用程序。我的问题是解密。我使用标准代码加密和解密,但它修改了web.config。在本地,它可以很好地工作,因为它可以修改web。我可以保存它,它仍然会运行,但当我把它上传到远程服务器时,它就不起作用了。

得到的错误是

Configuration Error Description:配置过程中出现错误处理服务此请求所需的配置文件。请查看下面的具体错误细节并修改您的配置文件。

解析器错误消息:使用提供程序解密失败"RsaProtectedConfigurationProvider"。来自提供程序的错误消息:坏数据

加密
try
{
    Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
    ConfigurationSection section = config.GetSection("connectionStrings");
    if (!section.SectionInformation.IsProtected)
    {
       section.SectionInformation.ProtectSection("RSAProtectedConfigurationProvider");
       config.Save();
    }
    catch (Exception ex)
    { 
    }

解密

Configuration config = WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);
ConfigurationSection section = config.GetSection("connectionStrings");
if (section.SectionInformation.IsProtected)
{
    section.SectionInformation.UnprotectSection();
    config.Save();
}

我调用解密方法每当页面加载,但它不工作,它给了我上面的错误。

我根本无法访问主机服务器。所以使用命令行不是一个选项。

Decrypting ConnectionString

确保远程服务器上有与本地相同的解密密钥。这将是机器键元素

您可以创建和导出RSA密钥容器,但是您仍然需要访问远程服务器来导入该容器。

顺便说一句,我不认为machineKey元素在这里是相关的。从MSDN:

具有本地机器作用域的密钥容器(useMachineContainer"true")存储在隐藏文件夹%ALLUSERSPROFILE%'Application Data'Microsoft'Crypto'RSA'MachineKeys

我猜这个场景是你试图加密网络。在将其推送到您的托管提供商/远程服务器之前进行本地配置。Steve Rowbotham对这个问题的回答是正确的,因为您需要在开发机器和远程服务器上使用相同的RSA Key容器,以便能够在本地加密和远程解密。

你能走不同的路加密网络吗?配置作为部署过程的一部分?我们使用MsDeploy来处理在部署期间加密配置文件,如果您愿意,我可以提供一些示例代码。

或者,当你的应用程序第一次加载时(在global.asax中的Application_Start事件期间),你可以检查web的connectionStrings部分是否正确。配置被加密,然后加密。你不应该解密网络。配置手动…

相关文章:
  • 没有找到相关文章