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

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

  •  4
  • Joe  · 技术社区  · 16 年前

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

    我们有很多C#windows服务。每个应用程序都安装在多台机器上(根据应用程序的不同,从2台到80台不等)

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

    我们的基础设施人员希望在部署软件时能够做到以下几点: 1) 编辑配置一次——为各种数据库连接设置适当的服务器、用户和密码。 3) 将该配置文件复制到特定软件的所有安装中。这意味着加密不能绑定到特定的机器。

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

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

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

    选项1)您可以在每台服务器的machine.config中更新此设置 machineKey 要完全相同。这对服务器有广泛的影响,例如依赖machineKey的无关应用程序。

    选项2)您可以覆盖 <machineKey> 在web.config中,范围更窄。

    会话和加密视图状态验证也取决于 <machineKey> ,因此通过在服务器之间使用相同的密钥,会话和视图状态将是相互可读的。对于一个由相同服务器和集中式会话存储组成的网络场来说,这可能是理想的,但这超出了最初问题的范围。

    How To: Configure MachineKey in ASP.NET 2.0

        2
  •  0
  •   Jim Counts    16 年前

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

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

    <value>:secret_password</value>
    

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

    因此,这允许编辑文件,同时对秘密保密。

        3
  •  0
  •   Charlie Martin    16 年前

    这听起来像是一份工作 X509 certificate .