代码之家  ›  专栏  ›  技术社区  ›  Joe

安全、可移植的加密配置值-可能吗?

  •  3
  • Joe  · 技术社区  · 15 年前

    我只是好奇是否有人对此有什么好主意。

    我们有很多C Windows服务。每个应用程序安装在多台计算机上(2-80之间的任何位置,取决于应用程序)。

    由于网络的安全设置,我们无法(一致地)对SQL服务器使用Windows身份验证,因此我们的连接字符串和凭据具有实际的用户名和密码。

    我们的基础架构人员希望在部署软件时能够执行以下操作: 1)编辑配置一次——为各种数据库连接设置适当的服务器、用户和密码。 2)对连接字符串(至少)进行加密或肉眼无法读取。 3)将该配置文件复制到特定软件的所有安装中。这意味着加密不能绑定到特定的计算机。

    DPAPI能做到这一点吗?是否可以在所有目标上安装一组密钥以允许解密公用配置文件?在这种情况下如何编辑配置?如何防止其他用户以相同方式查看加密配置?

    3 回复  |  直到 15 年前
        1
  •  2
  •   spoulson    15 年前

    DPAPI加密使用 <machineKey> 作为私钥。

    选项1)您可以在每个服务器的machine.config中更新此文件并设置 machineKey 完全相同。这对服务器有很大的影响,例如与依赖machinekey的应用程序无关。

    选项2)您可以覆盖 <机器键& GT; 在web.config中查找更窄的范围。

    会话和加密的视图状态验证还取决于 <机器键& GT; 因此,通过跨服务器拥有相同的密钥,会话和视图状态将是相互可读的。对于相同服务器的Web场和集中式会话存储,这可能是需要的,但这超出了原始问题的范围。

    How To: Configure MachineKey in ASP.NET 2.0

        2
  •  0
  •   Jim Counts    15 年前

    我可以对您问题的至少一个方面发表评论,因为我们在我工作的地方配置了一个服务。

    在编辑/创建配置时,我们将一个特殊的标记作为第一个字符:

    <value>:secret_password</value>
    

    冒号是特殊的标记。当服务启动并读取配置时,它通过查找令牌来查找所有未加密的值,对其进行加密,然后用加密的值覆盖纯文本。

    所以这允许编辑文件,同时保持秘密。

        3
  •  0
  •   Charlie Martin    15 年前

    这听起来像是 X509 certificate .