【问题标题】:C# SQL) How to encrypt connectionstring of web.config to Azure SQL database? (and import the key into Azure SQL database for decryption?)C# SQL) 如何将 web.config 的连接字符串加密到 Azure SQL 数据库? (并将密钥导入 Azure SQL 数据库进行解密?)
【发布时间】:2016-04-30 05:41:56
【问题描述】:

我的软件架构是,

WPF(用户计算机上的 Windows 桌面应用程序)- Azure 云服务上的 WCF Web 角色(Windows Communication Foundation)(此处存在到 Azure SQL 数据库的连接字符串)- Azure SQL Server(Azure SQL 数据库)。

据我所知,“database.secure.windows.net”之类的新功能最近可以包含在 Azure SQL 数据库的连接字符串中。

所以,我已经更改了我的应用程序的连接字符串,如上面的连接字符串中包含“安全”,通过这个我可以像以前一样成功地访问 Azure SQL 数据库。

如果我们用'secure.windows.net'配置我们的connectionstring,就不用担心connectionstring被暴露了吗?

如果还是这样,我需要将我的连接字符串加密到 Azure SQL 数据库,那么我该如何实现呢?

如何加密(也许是 RSA?)?

在尝试加密的过程中,我稍微了解了 RSA 加密,但还不够。

我想知道的最重要的事情是,如果我使用 RSA 容器或 makecert.exe(证书)加密,我如何将 RSA 容器或证书导出到 Azure SQL 数据库(Azure SQL 服务器),以便Azure SQL 数据库(Azure SQL 服务器)可以解密加密的连接字符串以允许来自客户端应用程序的访问?

P.S) 根据 Microsoft Azure 的官方文档,Azure 不支持 DPAPI 和 RSA,我们必须使用另一个受保护的配置提供程序,例如 PKCS12 ProtectedConfigurationProvider。

因为我的专业不是软件,而是生物化学,详细解释将不胜感激!

非常感谢!

【问题讨论】:

    标签: c# sql database azure encryption


    【解决方案1】:

    你可以使用受保护的部分,

    Configuration config = 
      ConfigurationManager.OpenExeConfiguration(
      ConfigurationUserLevel.None);
    ConfigurationSection section = 
      config.GetSection("connectionStrings");
    
    if (!section.SectionInformation.IsProtected)
    {
        section.SectionInformation.ProtectSection();
    }
    section.SectionInformation.ForceSave =true;
    config.Save(ConfigurationSaveMode.Modified);
    

    我会在安装程序、构建或应用启动时执行此操作,具体取决于易用性。

    查看这里https://msdn.microsoft.com/en-us/library/ms254494(v=vs.110).aspx了解更多详情。

    安全。 url 只是表示连接在 ssl 隧道内,因此数据是加密传输的。

    【讨论】:

    • 亲爱的 Mike Miller,我非常感谢您的出色知识。根据我一直在解决这个问题,您的解决方案是关于 DPAPI 或 RSA 保护的配置提供程序。但是,微软官方在一份文档中宣布 Azure 不支持 DPAPI 和 RSA,这可能是由于云平台结构的不同性质。并且微软官博推荐了PKCS12ProctectedConfigurationProvider,但是最近Azure从经典更新到资源组系统后好像没有更新。任何其他想法也将不胜感激......非常感谢......请帮助我......
    • 你读过 shanselmans 的博客吗? hanselman.com/blog/…
    • 亲爱的 Mike, 非常感谢您的热情关注。我终于自己解决了。仅当您有兴趣时,请参考我自己为其他人标记的答案。我在一周前阅读了链接的博客夫妇。非常感谢!
    【解决方案2】:

    经过将近 1 个月的努力,我终于成功地加密了连接字符串并连接到 Azure SQL 数据库。我们可以通过 PKCS12ProtectedConfigurationProvider 加密并连接到 Azure,而不是 DPAPI、RSA ProtectedConfigurationProvider。还有一些微软过期的旧博客,但这个 TechNet(Microsoft) 的链接仍然可用。 http://social.technet.microsoft.com/wiki/contents/articles/2951.windows-azure-sql-database-connection-security.aspx#_Download_and_Compile

    并且我们需要通过NUGET正确安装PKCS12提供者,并且在制作新云服务的过程中需要在New Azure Portal上安装证书。

    我希望我的艰难经历可以帮助那些必须解决像我这样的问题的人。

    谢谢!

    【讨论】:

      猜你喜欢
      • 2021-09-10
      • 2020-08-27
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-10
      • 2021-09-12
      相关资源
      最近更新 更多